MD5セキュリティ暗号化:二回暗号化(塩)

ガイドパッケージ:

    <dependency>
	    <groupId>commons-codec</groupId>
	    <artifactId>commons-codec</artifactId>
	</dependency>
	<dependency>
	    <groupId>org.apache.commons</groupId>
	    <artifactId>commons-lang3</artifactId>
	    <version>3.6</version>
	</dependency>

暗号化の種類:


import org.apache.commons.codec.digest.DigestUtils;
import org.junit.Test;

/**
 *
 * @author yhq
 * @date 2018/8/21 1:09
 *
 * 两次加密
 * 1,在前端:明文密码+固定盐在装成md5
 * 2,服务端:获取到传输过来的MD5,在加随机生成的盐,salt,再转成md5,存入数据库(数据库有password和salt字段),存密码的两次MD5生成的值和随机盐
 *
 *
 */
public class MD5Utils {

    private static final String salt = "1a2b3c4d"; //这个自定义

    public static String  md5(String sac){
        //commons-lang3  version:3.6
        String md5 =  DigestUtils.md5Hex(sac);
        System.out.println(md5);
        return md5;
    }

    /**
     * 第一次明文加固定salt加密
     * @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);

    }

    /**
     * 第二次加密md5的值+随机盐再进行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);
        System.out.println(str);
        return md5(str);
    }

    /**
     * 整体加密
     *
     */
    public static String inputPassToDbPass(String pass ,String salt){
        //第一次加密
        String onePass = inputPassToFormPass(pass);
        //第二次加密
        return formPassToDBPass(onePass,salt);

    }

 

おすすめ

転載: blog.csdn.net/weixin_42533856/article/details/82459565