将用户输入的密码和固定Salt通过MD5加密生成第一次加密后的密码,再将该密码和随机生成的Salt通过MD5进行第二次加密,最后将第二次加密后的密码和第一次的固定Salt存数据库
好处:
-
第一次作用:防止用户明文密码在网络进行传输
-
第二次作用:防止数据库被盗,避免通过MD5反推出密码,双重保险
public class MD5Util { public static String md5(String src){ return DigestUtils.md5Hex(src); } private static final String salt = "1a2b3c4d"; /** * 第一次MD5加密,用于网络传输 * @param inputPass * @return */ public static String inputPassToFormPass(String inputPass){ //避免在网络传输被截取然后反推出密码,所以在md5加密前先打乱密码 String str = "" + salt.charAt(0) + salt.charAt(2) + inputPass + salt.charAt(5) + salt.charAt(4); return md5(str); } /** * 第二次MD5加密,用于存储到数据库 * @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 input, String saltDB){ String formPass = inputPassToFormPass(input); String dbPass = formPassToDBPass(formPass, saltDB); return dbPass; } public static void main(String[] args) { System.out.println(inputPassToDbPass("123456","1a2b3c4d")); } }
本文介绍了一种增强密码安全性的双层MD5加密方法,首先使用固定Salt进行初次加密,再利用随机Salt进行二次加密,有效防止了密码在网络传输过程中的泄露及数据库被盗后密码的破解。
2384

被折叠的 条评论
为什么被折叠?



