MD5 常用于密码加密,例如,在注册时可以将密码转为 MD5 再放入数据库,在登录时校验登录密码和数据库存放的加密密码是否一致,来保证密码在数据库中存储的安全性。
下面介绍使用 Java 自带的加密类 MessageDigest
来加密字符:
/**
* MD5生成器
*
* 1.MD5(message-digest algorithm 5)信息摘要算法,
* 它的长度一般是32位的16进制数字符串(如81dc9bdb52d04dc20036dbd8313ed055)
* 2.由于系统密码明文存储容易被黑客盗取
* 3.应用:注册时,将密码进行md5加密,存到数据库中,防止可以看到数据库数据的人恶意篡改。
* 登录时,将密码进行md5加密,与存储在数据库中加密过的密码进行比对
* 4.md5不可逆,即没有对应的算法,从产生的md5值逆向得到原始数据。
* 但是可以使用暴力破解,这里的破解并非把摘要还原成原始数据,如暴力枚举法。
*/
public class MD5Utils {
public static String md5(String password) {
//生成一个md5加密器
try {
//创建具有指定算法名称如MD5的摘要
MessageDigest md = MessageDigest.getInstance("MD5");
//使用指定的字节数组更新摘要
md.update(password.getBytes());
//BigInteger 将8位数的字符串转成16位的字符串,得到的字符串形式是哈希码值
//BigInteger(参数1, 参数2) 参数1:1表示正数 0表示零 -1表示负数
//md.digest() 进行哈希计算并返回一个字节数组
return new BigInteger(1, md.digest()).toString(16);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}
标签:md,加密,数据库,密码,Java,MD5,md5
From: https://www.cnblogs.com/luisblog/p/16861608.html