MD5加密工具类
作者:互联网
package cn.itsource.basic.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 密码加密工具
*/
public class Md5Utils {
/**
* 加密
* @param context
*/
public static String encrypByMd5(String context) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(context.getBytes());//update处理
byte [] encryContext = md.digest();//调用该方法完成计算
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < encryContext.length; offset++) {//做相应的转化(十六进制)
i = encryContext[offset];
if (i < 0) i += 256;
if (i < 16) buf.append("0");
buf.append(Integer.toHexString(i));
}
return buf.toString();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
//加密
//1 生成随机盐值
String pwd = "1";//模拟数据库中的原始密码
//盐值
String salt = StrUtils.getComplexRandomString(32);
//2 通过这个盐值加密
String md5Pwd = Md5Utils.encrypByMd5(pwd + salt);
System.out.println(md5Pwd);
//将盐值和加密加盐的密码保存到数据库
//密码比对 - 通过用户名查询 - 密码 or 盐值【只要用户名没有问题】
//1 查询盐值-就是salt
String saltTmp = salt;//模拟从数据库查询的盐值
//3 加密比对
String pwdTmp = "1";//用户输入的密码
String inputMd5Pwd = Md5Utils.encrypByMd5(pwdTmp + saltTmp);
if (inputMd5Pwd.equals(md5Pwd)){
System.out.println("登录成功!");
}else{
System.out.println("密码错误");
}
}
}
标签:加密,String,盐值,密码,offset,工具,buf,MD5 来源: https://www.cnblogs.com/yangbl/p/16527683.html