其他分享
首页 > 其他分享> > MD5加密工具类

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