Java语言中用于MD5两次加密的工具类
最近想整理一套关于各种简单的工具类,下面先从基础开始.有任何问题欢迎指正:
package com.zcsj.sckill.until; import org.apache.commons.codec.digest.DigestUtils; public class MD5Util { public static String md5(String src){ return DigestUtils.md5Hex(src); } // 用于生成MD5 密码的工具类 private static final String salt="1a2b3c4d"; /** 第一次md5 : * 用于 通过输入的密码生成 传输的密码 :方法 通过固定盐值和明文密码之间的拼接在生成md5 */ public static String inputPassToFormPass(String inputPass){ String str=""+salt.charAt(0)+salt.charAt(2)+inputPass+salt.charAt(5)+salt.charAt(4);//12123456c3 return md5(str); } /** * 第二次md5 : 通过输入的密码和数据库随机盐值 继续生成 密码 */ public static String fromPassToDBPass(String fromPass,String salt){ String str=""+salt.charAt(0)+salt.charAt(2)+fromPass+salt.charAt(5)+salt.charAt(4);//12123456c3 return md5(str); } public static String inputPassToDBPass(String inputPass,String saltDB){ String formPass = inputPassToFormPass(inputPass); String dbPass = fromPassToDBPass(formPass, salt); return dbPass; } public static void main(String[] args) { System.out.println(inputPassToDBPass("123456","1a2b3c4d")); } }
第一次 (前端,客户端):密码加密是(明文密码+固定盐值)生成md5用于传输
第二次(前端,服务器) 在服务端再次加密,当获取到前端发送来的密码后。通过MD5(密码+随机盐值)再次生成密码后存入数据库。
下一篇:
使用Python模拟蒙蒂霍尔悖论游戏