标签:加密 String 盐值 密码 offset 工具 buf 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。