Java加密系列之(一)加密基础

密码的常用术语

明文:待加密信息

密文:经过加密后的明文

加密:明文转为密文的过程

加密算法:明文转为密文的转换算法

加密密钥:通过加密算法进行加密操作用的密钥

解密:将密文转为明文的过程

解密算法:密文转为明文的算法

解密密钥:通过解密算法进行解密操作用的密钥

密码分析:截获密文者试图通过分析截获的密文从而推断出原来的明文或密钥的过程

主动攻击:攻击者非法入侵密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗(对密文具有破坏作用)

被动攻击:对一个保密系统采取截获密文并对其进行分析和攻击(对密文没有破坏作用)

密码体制:由明文空间、密文空间、密钥空间、加密算法和解密算法五部分构成

密码协议:也称安全协议,指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全的服务

密码系统:指用于加密、解密的系统

柯克霍夫原则:数据的安全基于秘钥而不是算法 的保密。即系统的安全取决于密钥,对密钥保密,对算法公开。这是现代密码学设计的基本原则

密码的分类

按密码体制

对称加密(单钥密码、私钥密码) 指加密密钥与解密密钥相同

非对称加密(双钥密码、公钥密码) 指加密密钥与解密密钥不同,密钥分公钥、私钥

按明文处理方法

分组密码:指加密时将明文分为固定长度的组,用同一秘钥和算法对每一块加密,输出也是固定长度的密文。多用于网络加密

流密码:也称序列密码。指加密时每次加密一位或者一个字节明文

散列函数:不是用来完成数据的加解密,是用来验证数据的完整性。

特点:长度不受限制、哈希值容易计算、散列运算过程不可逆

相关算法:消息摘要算法MD5等、SHA——安全散列算法、MAC——消息认证码算法

数字签名:主要是针对以数字的形式存储的消息进行的处理

OSI安全体系

OSI(Open System Interconnection)开放式通信系统

网络通信

7.应用层

6.表示层

5.会话层

4.传输层

3.网络层

2.数据链路层

1.物理层

安全机制

加密机制

数字签名机制

访问控制机制

数据完整性机制

认证机制

业务流填充机制

路由控制机制

公正机制

安全服务

认证(鉴别)

访问控制服务

数据保密性服务

数据完整性服务

抗否认性服务

TCP/IP安全体系

7.应用层

4.应用层 6.表示层应用层安全

5.会话层

3.传输层 4.传输层 传输层安全

2.网络层 3.网络层 网络层安全

1.网络接口层 2.数据链路层网络接口层安全

1.物理层

安全服务 安全机制

认证(鉴别服务)认证机制

数字签名机制

访问控制服务 访问控制机制

路由控制机制

数据保密性服务 加密机制

业务流填充机制

数据完整性服务 数据完整性机制

抗否认性服务 公正机制

Java安全组成

JCA(Java Cryptography Architecture) Java加密体系结构提供基本的加密框架,比如消息摘要、数字签名

JCE(Java Cryptography Extension) Java加密扩展包在JCA的基础上做了扩展,比如DES、AES、RSA算法通过JCE提供

JSSE(Java Secure Socket Extension) Java安全套接字扩展包提供基于SSL的加密功能,主要用于网络传输

JAAS(Java Authentication and Authentication Service)Java鉴别与安全服务
基于Java平台的身份验证功能,如权限

时间: 2024-08-30 14:35:07

Java加密系列之(一)加密基础的相关文章

Java Web系列:Spring Security 基础

Spring Security虽然比JAAS进步很大,但还是先天不足,达不到ASP.NET中的认证和授权的方便快捷.这里演示登录.注销.记住我的常规功能,认证上自定义提供程序避免对数据库的依赖,授权上自定义提供程序消除从缓存加载角色信息造成的角色变更无效副作用. 1.基于java config的Spring Security基础配置 (1)使用AbstractSecurityWebApplicationInitializer集成到Spring MVC 1 public class Securit

Java Web系列:Spring MVC 基础

1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层面上给我们帮助,无法在思考和过程上帮助我们,而我们很多人都不喜欢思考和尝试. 2.实现Web MVC的基础 实现Web MVC基础可以概括为1个前段控制器和2个映射. (1)前端控制器FrontController ASP.NET和JSP都是以Page路径和URL一一对应,Web MVC要通过URL

Java Web系列:Spring Boot 基础 (转)

Spring Boot 项目(参考1) 提供了一个类似ASP.NET MVC的默认模板一样的标准样板,直接集成了一系列的组件并使用了默认的配置.使用Spring Boot 不会降低学习成本,甚至增加了学习成本,但显著降低了使用成本并提高了开发效率.如果没有Spring基础不建议直接上手. 1.基础项目 这里只关注基于Maven的项目构建,使用Spring Boot CLI命令行工具和Gradle构建方式请参考官网. (1)创建项目: 创建类型为quickstart的Maven项目,删除默认生成的

Java Web系列:Spring Boot 基础

Spring Boot 项目(参考1) 提供了一个类似ASP.NET MVC的默认模板一样的标准样板,直接集成了一系列的组件并使用了默认的配置.使用Spring Boot 不会降低学习成本,甚至增加了学习成本,但显著降低了使用成本并提高了开发效率.如果没有Spring基础不建议直接上手. 1.基础项目 这里只关注基于Maven的项目构建,使用Spring Boot CLI命令行工具和Gradle构建方式请参考官网. (1)创建项目: 创建类型为quickstart的Maven项目,删除默认生成的

Python解析器源码加密系列之(二):一次使用标准c的FILE*访问内存块的尝试

摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中.但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就提出了一种把通过FILE*来访问内存的需求,下文是针对这个需求的几个方面的尝试及其结论. 以下尝试的前提是:Win7 + VS2010. 在vc中,FILE其实就是_iobuf,定义如下: struct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前

(iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题

我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Base64 + DES加密.当然这需要移动端和后台服务器做一个统一. 1.Base64加解密 值得一提的是:apple提供了基础的Base64加解密算法.这样我们就可以直接使用方法去实现Base64加解密.先看一下apple都提供了哪些方法: @interface NSData (NSDataBase6

RHCE系列之磁盘加密----LUKS加密

LUKS (Linux Unified Key Setup)为 Linux 硬盘加密提供了一种标准,它不仅能通用于不同的 Linux 发行版本,还支持多用户/口令,并且由于它的加密密钥独立于口令,所以即使口令失密,我们也无需重新加密整个硬盘,只需要及时的改变口令即可重获安全! 由于 LUKS 提供了一个标准的磁盘加密格式,使得它不仅兼容性高,而且还提供了多用户密码管理的安全机制. 在我们的操作系统中,负责对磁盘做加密的工具为 Cryptsetup ,默认我们的系统已经安装了该工具. 由于 Cry

java密码学学习整理--对称加密(着重描述3des)

1.对称加密要点 对称加密算法的核心是加密和解密操作使用同一套密钥.加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 2.des(参考自:http://baike.baidu.com/view/878529.htm?from_id=210508&type=syn&fromtitle=DES&fr=aladdin) DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的

【转】 java DES ECB模式对称加密解密

最近需要又要使用DES加密数据,要求DES加密出来的数据为对称加密,经过研究,发现了一些问题: 1.DES对称ECB模式加密的数据,长度必须为8的倍数 2.加密的数据,加密后先转码(因为加密后的数据我是转码了),否则解密是乱码格式 一下是源代码: 这个是加密的工具类: package com.palmfu.sql; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpe