用途 | 推荐使用的安全的密码算法 | 常见的不安全的密码算法 |
对称加密 | AES(密钥长度>=128bits) | DES、3DES、RC2、RC4 |
哈希算法 | SHA256或以上 | MD5、SHA1 |
非对称加密 | RSA(密钥长度>=2048bits) | RSA(密钥长度<=1024bits) |
数字签名 | RSA(密钥长度>=2048bits) | RSA(密钥长度<=1024bits) |
密钥交换 | DH(密钥长度>=2048bits) | DH(密钥长度<=1024bits) |
备注:
1. AES不建议使用ECB(同样的明文总是会产生相同的密文),推荐使用CBC模式。
2. 应注意编码及加密的区别,例如base64属于编码而不属于加密。
3. 加解密中建议使用安全随机数,如java.security.SecureRandom,类Unix系统 (包括OS X): /dev/random;不安全随机数如C标准函数random(),java.util.Random()。
4. 不建议使用私有、非标准化的加解密方式。