700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > SpringBoot集成Jasypt 对配置文件加密(明文加密)

SpringBoot集成Jasypt 对配置文件加密(明文加密)

时间:2020-05-18 10:19:47

相关推荐

SpringBoot集成Jasypt 对配置文件加密(明文加密)

Jasypt简介:

官网:/index.html

Jasypt 是一个 java 库,它允许开发人员以最小的努力将基本的加密功能添加到他/她的项目中,而无需深入了解密码学的工作原理。

·高安全性、基于标准的加密技术,适用于单向和双向加密。加密密码、文本、数字、二进制文件…

·适合集成到基于Spring的应用程序中,也可以与Spring Security透明地集成。

·用于加密应用程序(即数据源)配置的集成功能

·多处理器/多核系统中高性能加密的特定功能。

与springboot集成

1.、引入jar包:

–这里以3.0.3版本,对应的jasypt版本1.9.3

<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version></dependency>

2、 生成加密数据字符串:

这里介绍两种:

· 命令行

· java代码

2.1 命令行加密

进入到本地jar 包仓库,使用cmd 或者 git bash 工具

加密:

java -cp ./jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password=pkslow algorithm=PBEWithMD5AndTripleDES input=password

解密:

java -cp ./jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI password=salt algorithm=PBEWithMD5AndTripleDES input=yZ+fSk2aKpbveRDOGHbIRzPVX5AT601v

加解密就只是方法名称不同:

示例:

2.2 java 代码

@Testpublic void jasyptTest() {StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();EnvironmentPBEConfig config = new EnvironmentPBEConfig();//config.setAlgorithm 设置加密方式config.setAlgorithm("PBEWithMD5AndTripleDES");//config.setPassword 设置密钥config.setPassword("salt");standardPBEStringEncryptor.setConfig(config);//设置明文密码String input = "123456";//encrypt是加密方法,decrypt是解密方法String encryptedText = standardPBEStringEncryptor.encrypt(input);log.info("加密结果: " + encryptedText);log.info("解密结果: " + standardPBEStringEncryptor.decrypt(encryptedText));}

3、 配置文件中使用

只需要使用默认的前缀 ENC()包裹,括号内就是加密后的字符

url: jdbc:mysql://127.0.0.1:3306/db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: ENC(yZ+fSk2aKpbveRDOGHbIRzPVX5AT601v)

4、关于Jasypt敏感配置存放位置(盐值、算法等)

4.1 yml或properties文件中 (简单但不安全)

jasypt:encryptor:password: salt

4.2 代码内配置

@Bean("jasyptStringEncryptor")public StringEncryptor stringEncryptor1() {PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();SimpleStringPBEConfig config = new SimpleStringPBEConfig();config.setPassword("d947a954-salt");config.setAlgorithm("PBEWithMD5AndTripleDES");config.setKeyObtentionIterations("1000");config.setPoolSize(Runtime.getRuntime().availableProcessors());config.setProviderName("SunJCE");config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");config.setStringOutputType("base64");encryptor.setConfig(config);return encryptor;}

4.3 JVM参数方式

# 项目启动时,带入以下参数-Djasypt.encryptor.password=salt

-END

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。