对称密码算法是当今应用范围最广,使用频率最高的加密算法。它不仅应用于软件行业,在硬件行业同样流行。各种基础设施凡是涉及到安全需求,都会优先考虑对称加密算法。对称密码算法的加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程互逆。
(1)加解密通信模型
(2)特点:算法公开、计算量小、加密速度快、加密效率高。
(3)弱点:双方都使用同样密钥,安全性得不到保证。
对称密码有流密码和分组密码两种,但是现在普遍使用的是分组密码:
(4)分组密码工作模式
ECB:电子密码本(最常用的,每次加密均产生独立的密文分组,并且对其他的密文分组不会产生影响,也就是相同的明文加密后产生相同的密文)
CBC:密文链接(常用的,明文加密前需要先和前面的密文进行异或运算,也就是相同的明文加密后产生不同的密文)
CFB:密文反馈
OFB:输出反馈
CTR:计数器
常用对称密码:
DES(Data Encryption Standard,数据加密标准)
3DES(Triple DES、DESede,进行了三重DES加密的算法)
AES(Advanced Encryption Standard,高级数据加密标准,AES算法可以有效抵制针对DES的攻击算法)
先来看一下这三种算法的简单对比:
下面我们看如何使用 DES / 3DES / AES 三种算法实现 对称加密:
DES算法
DES:数据加密标准,是对称加密算法领域中的典型算法
特点:密钥偏短(56位)、生命周期短(避免被破解)
Java实现
1)生成密钥
2)加密
3)解密
我们可以发现,加密解密我们只是设置了不同的模式而已。
3DES算法
3DES:将密钥长度增至112位或168位,通过增加迭代次数提高安全性
缺点:处理速度较慢、密钥计算时间较长、加密效率不高
Java实现
1)生成密钥
2)3DES加密
3)3DES解密
AES算法(推荐使用)
AES:高级数据加密标准,能够有效抵御已知的针对DES算法的所有攻击
特点:密钥建立时间短、灵敏性好、内存需求低、安全性高
Java实现
1)生成密钥
2)AES加密
3)AES解密