java.security 包提供了消息摘要/消息签名等算法.
将长度不固定的消息(message)作为输入参数,运行特定的Hash函数,生成固定长度的输出,这个输出就是Hash,也称为这个消息的消息摘要(Message Digest)
消息签名可以看成是在密钥加密的基础上的消息摘要, 消息摘要和消息签名的作用:
- 数据完整性检查
- 数据校验, 是否在传递过程中被篡改
消息摘要(Message Digest)
有如下几种消息摘要:
- MD5, 任何消息都压缩为16字节(128位)的摘要(指纹), @Quection: 不推荐使用 MD5的原因是?
- SHA1(属于SHA一代), 任何消息都压缩为20字节(160位)的摘要, 所以SHA-1共有最多2^120个摘要;
- SHA256(属于SHA二代), 32字节(256位);
- SHA512
- MAC(或者HMAC算法), 在散列基础上增加了密钥;
- BCrypt: 根据Blowfish加密算法所设计的密码散列函数
|
消息签名(Message Signature)
- DSA(数字签名)/RSA(公钥/私钥), 例如DSA是利用了对数值巨大的数字进行因数分解的困难性.
对称加密
- DES
- AES取代DES
- Blowfish: 对称密钥区块加密算法
/***** JDK提供的 DES, 位于 java.security *****/ |
blowfish & bcrypt
Encryption with BlowFish in Java - Stack Overflow
// blowfish |
BCrypt是基于Blowfish加密算法所设计的密码散列函数, 代码jBCrypt - strong password hashing for Java
// bcrypt |
非对称加密
- RSA: @todo