当前位置: 首页 > 工具软件 > Jasypt > 使用案例 >

解析jasypt加密算法

巩镜
2023-12-01

解析jasypt加密算法

算法的使用

可以参考:https://izpan.com/springboot-jasypt.html

原理

demo1

package com.junna.jasypt;

import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;

import java.util.Date;

/**
 * @Created with Intellij IDEA
 * @Author : payne
 * @Date : 2018/5/18 - 10:37
 * @Copyright (C), 2018-2018
 * @Descripition : Jasypt安全框架加密类工具包
 */
public class JasyptUtils {

    /**
     * Jasypt生成加密结果
     *
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value    待加密值
     * @return
     */
    public static String encryptPwd(String password, String value) {
        PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
        encryptOr.setConfig(cryptOr(password));
        String result = encryptOr.encrypt(value);
        return result;
    }

    /**
     * 解密
     *
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value    待解密密文
     * @return
     */
    public static String decyptPwd(String password, String value) {
        PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
        encryptOr.setConfig(cryptOr(password));
        String result = encryptOr.decrypt(value);
        return result;
    }

    public static SimpleStringPBEConfig cryptOr(String password) {
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(password);
        config.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM);
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setStringOutputType("base64");
        return config;
    }


//    private static final String KEY_WORD = "^KWbp]V1M+oH4%2Q07*FuM6VGA9Km0gs";
    private static final String KEY_WORD = "MPKU!x75WHw58%Q$AI8@TT#lr5pCZmf0";

    public static void main(String[] args) {
        // 加密
        String encryptPwd = encryptPwd(KEY_WORD, "tpkq@20190305!%");
        System.out.println(encryptPwd);
        System.out.println(new Date());
//        String encryptPwd = "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";

        // 解密
        System.out.println(decyptPwd(KEY_WORD, encryptPwd));
    }
}

demo2

package com.junna.jasypt;

import com.alibaba.druid.filter.config.ConfigTools;
import com.alibaba.fastjson.JSONObject;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;

/**
 * @Created with Intellij IDEA
 * @Author : payne
 * @Date : 2018/5/18 - 10:37
 * @Copyright (C), 2018-2018
 * @Descripition : Jasypt安全框架加密类工具包
 */
public class JasyptUtils2 {
    private static final String DEFAULT_PRIVATE_KEY_STRING = "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAocbCrurZGbC5GArEHKlAfDSZi7gFBnd4yxOt0rwTqKBFzGyhtQLu5PRKjEiOXVa95aeIIBJ6OhC2f8FjqFUpawIDAQABAkAPejKaBYHrwUqUEEOe8lpnB6lBAsQIUFnQI/vXU4MV+MhIzW0BLVZCiarIQqUXeOhThVWXKFt8GxCykrrUsQ6BAiEA4vMVxEHBovz1di3aozzFvSMdsjTcYRRo82hS5Ru2/OECIQC2fAPoXixVTVY7bNMeuxCP4954ZkXp7fEPDINCjcQDywIgcc8XLkkPcs3Jxk7uYofaXaPbg39wuJpEmzPIxi3k0OECIGubmdpOnin3HuCP/bbjbJLNNoUdGiEmFL5hDI4UdwAdAiEAtcAwbm08bKN7pwwvyqaCBC//VnEWaq39DCzxr+Z2EIk=";
    public static final String DEFAULT_PUBLIC_KEY_STRING = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKHGwq7q2RmwuRgKxBypQHw0mYu4BQZ3eMsTrdK8E6igRcxsobUC7uT0SoxIjl1WveWniCASejoQtn/BY6hVKWsCAwEAAQ==";
    public static void main(String[] args) throws Exception {
        String[] strings = ConfigTools.genKeyPair(512);
        System.out.println(JSONObject.toJSON(strings));
        // zfsj_dev/Taiping@12#$
        String encrypt = ConfigTools.encrypt("Taiping@12#$");
        System.out.println(encrypt);
    }

}
 类似资料: