md5加密简单实现
以注册登录为例,实现md5加密
创建工具类
public class RandomCharacters {
/**
* 生成指定长度的随机字符串
* @param length 用户要求产生字符串的长度
* @return
*/
public static String getRandomString(int length){
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<length;i++){
int number=random.nextInt(62);
sb.append(str.charAt(number));
}
return sb.toString();
}
注册
1、获取所输入的密码
String userPwd = user.getUserPwd();
2、加盐,生成随机字符串
//加盐 生成随机字符串
String randomString = RandomCharacters.getRandomString(4);
3、拼接 盐值+密码
String newPwd = userPwd + randomString;
4、把拼接后的密码加密
String md5Hex = DigestUtils.md5Hex(newPwd);
5、调用方法把注册时所输入的值存储到作用域中
userService.regist(userName,md5Hex,randomString);
登录
1、从数据库中获取盐值
String s = userFromDB.getuSalt();
2、获取登录时输入的密码,拼接盐值和密码
//获取密码
String userPwd = user.getUserPwd();
//拼接
String newPwd = userPwd + s;
3、获取加密后的密码
String md5Hex = DigestUtils.md5Hex(newPwd);
4、获取数据库中输入的该账号所对应的密码
String uPwdFromDB = userFromDB.getUserPwd();
5、把加密后的密码和从数据库中获取的密码相比较,如果相同,登录成功,反之,不成功
if(md5Hex.equals(uPwdFromDB)){
message = "true";
}