用户登录
两次MD5加密
1.用户端:PASS=MD5(明文+固定Salt)
2.服务端:PASS=MD5(用户输入+随机Salt)
package com.imooc.miaosha.util; import org.apache.commons.codec.digest.DigestUtils; public class MD5Util { public static String md5(String src){ return DigestUtils.md5Hex(src); } private static final String salt="1a2b3c4d"; public static String inputPassToFormPass(String inputPass){ String str= ""+salt.charAt(0)+salt.charAt(2)+inputPass+salt.charAt(5)+salt.charAt(4); return md5(str); } 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(inputPassToFormPass("123456"));//12123456c3// System.out.println(formPassToDBPass(inputPassToFormPass("123456"),"1a2b3c4d")); // System.out.println(inputPassToDbPass("123456","1a2b3c4d")); } }
用什么要做两次MD5加密?
第一次MD5,用户登录时输入明文密码,在网络上进行传输,如果不做任何处理,数据包被截取,就会得到明文密码。
第二次MD5,防止数据库被盗后得到密码。
首先对用户输入的明文密码做一次MD5,再把MD5之后的密码传递给服务端,服务端接收到经过一次MD5后的密码后并不是直接写入到数据库里,而是生成一个随机的Salt,和用户输入的密码进行拼装,再做一次MD5,然后把MD5和Salt同时写到数据库中。
浙公网安备 33010602011771号