package com.nq.utils; import cn.hutool.core.text.StrBuilder; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.security.MessageDigest; import java.util.Base64; public class Md5Util { private static char sHexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; public static String getMD5(String source) { try { byte[] bytes = source.getBytes(); // 获得MD5摘要算法的 MessageDigest 对象 MessageDigest md = MessageDigest.getInstance("MD5"); // 使用指定的字节更新摘要 md.update(bytes); // 获得密文 byte[] mdBytes = md.digest(); // 把密文转换成十六进制的字符串形式 int length = mdBytes.length; char[] chars = new char[length * 2]; int k = 0; for (int i = 0; i < length; i++) { byte byte0 = mdBytes[i]; chars[k++] = sHexDigits[byte0 >>> 4 & 0xf]; chars[k++] = sHexDigits[byte0 & 0xf]; } return new String(chars); } catch (Exception e) { e.printStackTrace(); return null; } } /** * 加密方法 * @param str * @return */ public static String md5(String str) { return getMD5(str); } //固定盐 private static final String salt = "30c722c6a546ss4306a93a814c9f0a"; public static String inputStr(String inputPass) { String str = ""+salt.charAt(0)+salt.charAt(2) + inputPass +salt.charAt(5) + salt.charAt(4); System.out.println(str); return md5(str); } /** * 将用户输入的明文密码与固定盐进行拼装后再进行MD5加密 * @param inputPass * @return */ public static String inputPassToFormPass(String inputPass) { String str = ""+salt.charAt(0)+salt.charAt(2) + inputPass +salt.charAt(5) + salt.charAt(4); System.out.println(str); return md5(str); } /** * 将form表单中的密码转换成数据库中存储的密码 * @param formPass * @param salt 随机盐 * @return */ public static String formPassToDBPass(String formPass, String salt) { String str = ""+salt.charAt(0)+salt.charAt(2) + formPass +salt.charAt(5) + salt.charAt(4); return md5(str); } public static String inputPassToDbPass(String inputPass, String saltDB) { String formPass = inputPassToFormPass(inputPass); String dbPass = formPassToDBPass(formPass, saltDB); return dbPass; } }