SpringBoot 使用jasypt 对敏感字段加密

发布时间 2023-07-21 10:16:46作者: ni当像鸟飞往你的山
    com.github.ulisesbocchio
    jasypt-spring-boot-starter
     2.1 . 2 

如果Spring Boot项目中使用了@SpringBootApplication或者@EnableAutoConfiguration,在项目里添加jasypt-spring-boot-starter依赖会自动对项目中整个属性(包括系统属性,环境属性, 命令行参数, application.properties, yaml)启动加密。

一.测试生成密文

敏感信息明文存储会带有一定的安全隐患,加密秘钥的使用尽量还是放到内部代码里或者进行外部传入使用,而不是直接配置到配置文件里定义

1.通过代码生成

    public static void main(String[] args) {

        BasicTextEncryptor textEncryptor =  new BasicTextEncryptor();

//加密所需的salt(盐)PBEWithMD5AndDES
        textEncryptor.setPassword( "test" );
//要加密的数据(数据库的用户名或密码)
        String username = textEncryptor.encrypt( "root" );

        System.out.println( "username:" + username);
        System.out.println( "username:" + textEncryptor.decrypt(username));

    }

  2.cmd窗口打开命令窗口,输入命令: 

java -cp **\jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=allanpassword algorithm=PBEWithMD5AndDES

java –cp jar包所在路径\jar包 org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=”数据库密码” password=密钥   algorithm=默认PBEWithMD5AndDES加密

参数说明:
input =需要加密的字段值
password=密钥,随意设置(配置文件中需要添加此密码,相当于约定密码)
algorithm= 算法,默认PBEWithMD5AndDES

二.解密

1.在服务器上启动
方式1、把秘钥当做程序启动时环境变量(推荐),示例如下:

java -Djasypt.encryptor.password=秘钥 -jar xxx.jar

方式2、把秘钥当做程序启动时的命令行参数(推荐),示例如下:

java -jar xxx.jar --jasypt.encryptor.password=秘钥

使用idea在本地启动

2.在IDEA中测试的时候需要在运行配置加上

-Djasypt.encryptor.password=xxxx

三.配置实现

将生成的加密内容配置在之前的值的位置,外面加上ENC(加密后的值)

四.可能遇到的问题

版本不兼容

 

参考:https://goshare.site/article/29863

https://blog.csdn.net/weixin_49076592/article/details/119797675?spm=1001.2014.3001.5502