一、对称加密算法DES
1、概述:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
对称加密的特点: 即加密密钥 = 解密密钥
2、常用的对称加密算法:
- 初等
- DES —3DES
- AES
- PBE
- IDEA
3、对称加密算法 —— DES
DES( Data Encryption Standard ) 是一种数据加密标准。
其密钥规则如下:
4、JDK实现DES算法
【1】初始化密钥
- 使用KeyGenerator类的getInstance()静态方法,获取生成指定算法的密钥生成器,参数是算法名称.
- 使用KeyGenerator类的init()方法进行密钥生成器的初始化,指定密钥生成器产生密钥的长度.
- 使用KeyGenerator类的generatorKey()方法生成一个密钥对象,返回SecretKey密钥对象.
- SecretKey为密钥对象.使用它的getEncoded()方法返回一个密钥(字节数组形式)
【2】转化密钥(还原密钥)
- 将jdk生成的密钥对象转化成DES规则的密钥对象.
- 创建一个DESKeySpec实例,作用是将JDK初始化的密钥转化成DES规则的密钥.
- 构造方法参数是JDK生成的密钥(字节数组形式).
- 使用SecretKeyFactory类的getInstance()静态方法获取一个密钥工厂实例,参数是算法名称
- 使用SecretKeyFactory类的generateSecret()方法生成密钥,参数是DESKeySpec实例.返回SecretKey,返回的SecretKey实例就是符合DES算法的密钥.
执行结果:
jdk des encrypt:ea3293902913510b
jdk des decrypt:wen-min
5、DES加密算法的消息传递机制;
加密算法深入学习链接:https://www.iteye.com/blog/snowolf-379860
二、对称加密算法3DES
3DES,即3重DES,是DES的一个分支;但由于安全性问题;且违反柯克霍夫原则,使用频率低。
好处:
- 密钥长度增强;
- 迭代次数提高。
1、3重DES的规则:
2、JDK实现3DES
与实现DES方式基本一致,算法名称要改为DESede,密钥长度为168,转换密钥时使用DESedeKeySpec类.
在使用KeyGenerator的init()方法时,参数要指定密钥的长度.可以直接指定一个数值.同时也可以使用SecureRandom实例作为参数,该实例的作用是获取KeyGenerator对应算法其默认的密钥长度.
执行结果:
三、对称加密算法AES
1、概述
AES是DES的高级替代,也是目前使用最多的对称加密算法
DES有漏洞,所以,产生了3重DES<br>
3重DES的效率比较低,所以产生了AES<br>
AES的特点是:
- 使用的更为广泛
- 目前还没有被破解
- 通常用与移动通信系统加密和SSH协议的软件加密
2、AES的使用规则:
3、JDK实现AES加密解密算法:
4、AES对称加密算法消息传递规则:
四、PBE加密算法
1、概述
PBE算法结合了消息摘要算法和对称加密算法的优点。PBE是基于口令的加密
对称加密算法之PBE的特点概述,本质上是对DES/3DES/AES对称加密算法的包装,不是新的算法,不过也是最为牛逼的一种方式。
盐:指加密的随机字符串或者口令等,也可以人为是一些扰码,防止密码的暴力破解
2、PBE算法的规则:
加密算法安全等级:PBE>AES>3DES>DES
3、JDK实现PBE加密解密算法
执行结果:
4、PBE加密算法的消息传递机制