您的位置 首页 java

代码这样写是不安全的(3):不要再使用MD5

MD5消息摘要算法是一个广泛使用的加密Hash 函数 ,被广泛应用于密码存储、消息和数据的完整性验证。

然而,MD5算法被证明不安全已超过十年了,自从王小云破解MD5算法后,国内外对MD5碰撞的相关研究与恶意利用从未停止,可在网上搜索《MD5碰撞的演化之路》详细了解。

虽然大部分公司已经抛弃了MD5,但是还是有不少公司在使用这种过时的算法。

不安全的代码示例(JAVA)

MessageDigest md5Digest = MessageDigest.getInstance("MD5");

md5Digest.update(password.getBytes());
byte[] hashValue = md5Digest.digest(); 
byte[] hashValue = DigestUtils.getMd5Digest().digest(password.getBytes()); 

代码这样写才安全(JAVA)

使用bouncy castle:

public static byte[] getEncryptedPassword(String password, byte[] salt) throws NoSuchAlgorithmException, InvalidKeySpecException {
PKCS5S2ParametersGenerator gen = new PKCS5S2ParametersGenerator(new SHA256Digest());
gen.init(password.getBytes("UTF-8"), salt.getBytes(), 4096);
return ((KeyParameter) gen.generateDerivedParameters(256)).getKey();
} 

Java 8 及以上:

public static byte[] getEncryptedPassword(String password, byte[] salt) throws NoSuchAlgorithmException, InvalidKeySpecException {
KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, 4096, 256 * 8);
SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
return f.generateSecret(spec).getEncoded();
} 

文章来源:智云一二三科技

文章标题:代码这样写是不安全的(3):不要再使用MD5

文章地址:https://www.zhihuclub.com/178615.shtml

关于作者: 智云科技

热门文章

网站地图