【jasypt-1.9.3-PBEWithHmacSHA512AndAES_256-加密解密】

介绍

本人由于springboot项目中需要使用enc加密配置文件中的账号密码
,所以使用jasypt-spring-boot-starter配置加密和使用org.jasypt生成enc加密串

1.依赖

        <dependency>
            <groupId>org.jasypt</groupId>
            <artifactId>jasypt</artifactId>
            <version>1.9.3</version>
            <scope>compile</scope>
        </dependency>
            <dependency>
                <groupId>com.github.ulisesbocchio</groupId>
                <artifactId>jasypt-spring-boot-starter</artifactId>
                <version>3.0.4</version>
            </dependency>

2.jasypt-spring-boot-starter配置

配置文件配置加密的加密方式和加密的密钥,使用的话,直接ENC()(里面填加密后的加密串),然后启动项目,项目会自动将配置文件中带enc的进行解密

jasypt:
  encryptor:
    algorithm: PBEWithHmacSHA512AndAES_256
    password: my-password

3.编写加密工具类型

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

/**
 * @Author huangshuai
 * @Description: 加解密密算法
 * @Date 2023/5/30 7:48 下午
 */
public class JasyptUtil {

    /**
     * @Author: huangshuai
     * @Description: textToEncrypt,需要加密的明文, salt,加密的盐,需要与解密保持一致, algorithm,加密算法,需要与解密算法保持一致
     * @Date: 2023/5/30
     * @Param textToEncrypt:
     * @Param salt:
     * @Param algorithm:
     * @Return: java.lang.String
     **/
    public static String encrypt(String textToEncrypt, String salt, String algorithm) {
        // 1. 创建加解密工具实例
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        // 2. 加解密配置
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(salt);
        // 3. 加密算法,需要与解密算法一致
        config.setAlgorithm(algorithm);
        // 为减少配置文件的书写,以下都是 Jasyp 3.x 版本,配置文件默认配置
        config.setKeyObtentionIterations( "1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        // 4. 加密
        return encryptor.encrypt(textToEncrypt);
    }


    /**
     * @Author: huangshuai
     * @Description: textToDecrypt,需要解密的密文, alt,解密的盐,需要与加密保持一致, algorithm,解密算法,需要与加密算法保持一致
     * @Date: 2023/5/30
     * @Param textToDecrypt: 
     * @Param salt: 
     * @Param algorithm: 
     * @Return: java.lang.String
     **/
    public static String decrypt(String textToDecrypt, String salt, String algorithm){
        // 1. 创建加解密工具实例
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        // 2. 加解密配置
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(salt);
        // 3. 解密算法,必须与加密算法一致
        config.setAlgorithm(algorithm);
        // 为减少配置文件的书写,以下都是 Jasyp 3.x 版本,配置文件默认配置
        config.setKeyObtentionIterations( "1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        // 4. 解密
        return encryptor.decrypt(textToDecrypt);
    }

    public static void main(String[] args) {
        System.out.println(encrypt("root", "my-password", "PBEWithHmacSHA512AndAES_256"));

//        System.out.println(decrypt("ZgF88+npcNxHRcGzN0y/wh1+IAVH330hNDyxMFB/29LM9rTmIEMh6O/odpRVxF1K", "my-password", "PBEWithHmacSHA512AndAES_256"));

    }

}

4.注意事项

  • PBEWithHmacSHA512AndAES_256加密算法直接使用Jasypt的命令行无法生成加密串,可能是不支持吧。使用PBEWithMD5AndDES可以直接生成
  • 并且在编写工具类的时候,PBEWithMD5AndDES可以直接最简单的设置加密算法和密钥就直接生成,但如果是PBEWithHmacSHA512AndAES_256会报错,原因暂时未知,建议使用我的3里面的工具类,经过验证可以使用
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值