1、对称加密
1.1 DES
- 已破解,不再安全,基本没有企业在用了
- 是对称加密算法的基石,具有学习价值
- 密钥长度56(JDK)、56/64(BC)
1.2 DESede(三重DES)
- 早于AES出现来替代DES
- 计算密钥时间太长、加密效率不高,所以也基本上不用
- 密钥长度112/168(JDK)、128/192(BC)
1.3 AES
- 最常用的对称加密算法
- 密钥建立时间短、灵敏性好、内存需求低(不管怎样,反正就是好)
- 实际使用中,使用工作模式为CTR(最好用BC去实现),此工作模式需要引入IV参数(16位的字节数组)
- 密钥长度128/192/256,其中192与256需要配置无政策限制权限文件(JDK6)
- 填充模式最常用的两种PKCS5Padding和PKCS7Padding,其中后者只有BC独有。
1.4 对比
称加密算法(加解密密钥相同)
名称 |
密钥长度 |
运算速度 |
安全性 |
资源消耗 |
DES |
56位 |
较快 |
低 |
中 |
3DES |
112位或168位 |
慢 |
中 |
高 |
AES |
128、192、256位 |
快 |
高 |
低 |
2、非对称加密
2.1 rsa
- RSA 是一种非对称加解密算法。
- 公钥用于加密,它是向所有人公开的;私钥用于解密,只有密文的接收者持有。
- RSA 与 DSA 都是非对称加密算法。其中RSA的安全性是基于极其困难的大整数的分解(两个素数的乘积);DSA 的安全性
是基于整数有限域离散对数难题。基本上可以认为相同密钥长度的 RSA 算法与 DSA 算法安全性相当。
2.2 dsa
- DSA 一般用于数字签名和认证。
- DSA是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。
- DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。
- 在DSA数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥
来验证签名的真实性。DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,
只用于签名,它比RSA要快很多.(据说100倍不止哦)
2.3 ECC
RSA 与 DSA 各有优缺点,那有没一个更好的选择呢?答案是肯定的,ECC(Elliptic Curves Cryptography):椭
圆曲线算法。
ECC 与 RSA 相比,有以下的优点:
- 相同密钥长度下,安全性能更高,如160位ECC已经与1024位RSA、DSA有相同的安全强度。
- 计算量小,处理速度快,在私钥的处理速度上(解密和签名),ECC远 比RSA、DSA快得多。
- 存储空间占用小 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多, 所以占用的存储空间小得多。
- 带宽要求低使得ECC具有广泛得应用前景。
这使得ECC 取代RSA成为可能。
2.4 对比
名称 |
成熟度 |
安全性(取决于密钥长度) |
运算速度 |
资源消耗 |
RSA |
高 |
高 |
慢 |
高 |
DSA |
高 |
高 |
慢 |
只能用于数字签名 |
ECC |
低 |
高 |
快 |
低(计算量小,存储空间占用小,带宽要求低) |
3、对称与分对称比较
名称 |
密钥管理 |
安全性 |
速度 |
对称算法 |
比较难,不适合互联网,一般用于内部系统 |
中 |
快好几个数量级(软件加解密速度至少快100倍,每秒可以加解密数M比特数据),适合大数据量的加解密处理 |
非对称算法 |
密钥容易管理 |
高 |
慢,适合小数据量加解密或数据签名 |