1、MD5算法介绍
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
2、特点
2.1. MD5加密没有反向的解密算法。
2.2. MD5加密算法对于一个字符串多次运算得到的结果是一样的。只要字符串改变了一个任意字符,得到的密文与源字符的密文是完全不一样的。
3、主要作用
在用户注册时,会将密码进行MD5加密,存到数据库中,这样可以防止数据库被恶意攻击得到用户的密码信息。数据库中存的数据如下所示:
4、实现代码
public static String encryption(String clearText,int salt){
char[] clearTextArray=clearText.toCharArray(); //将明文转换为字符型数据
for (int i = 0; i < clearTextArray.length; i++) { // 循环遍历明文字符型数据
clearTextArray[i]=(char)(clearTextArray[i]+salt); // 每个字符加上相应的盐值
}
String clearTextString=new String(clearTextArray); // 加盐后的字符型数据转化为字符型数据
return DigestUtils.md5Hex(clearTextString);
}
public int Register(String phone, String password){
boolean isRegister=userDao.findPhone(phone);
if (!isRegister){
//手机号可以注册
// 随机生成盐值
int min=100,max=1000;
int salt=(int)(Math.random()*(max-min))+min;
// 加密明文得到密文
String psw=Md5Util.encryption(password,salt);
// 生成随机昵称
String temp= UUID.randomUUID().toString().replaceAll("-","");
String nick="用户" + temp.substring(0,18);
5、运行结果为
0ee7ab399edc3691e15fc36be56d8d61(String)