赞
踩
Jasypt(Java Simplified Encryption)是一个Java库,它允许开发人员以最小的努力为项目添加基本的加密功能,而无需深入了解密码学的工作原理。
- <dependency>
- <groupId>com.github.ulisesbocchio</groupId>
- <artifactId>jasypt-spring-boot-starter</artifactId>
- <version>3.0.4</version>
- </dependency>
- jasypt:
- encryptor:
- # 加密的秘钥
- password: haha
- # 加密算法
- algorithm: PBEWithMD5AndDES
- iv-generator-classname: org.jasypt.iv.NoIvGenerator
- property:
- # 算法识别的前后缀,默认ENC(),包含在前后缀的加密信息,会使用指定算法解密
- prefix: Enc(
- suffix: )
jasypt3.0后,默认支持的算法为 PBEWITHHMACSHA512ANDAES_256 ,该算法需要JDK1.9 以上支持或者添加JCE(Java Cryptography Extension 无限强度权限策略文件)支持。本例使用PBEWithMD5AndDES算法。
- public class JasyptUtils {
- public static void main(String[] args) {
- String info = encrypt("root");
- System.out.println("加密后:" + info);
- String decrypt = decrypt(info);
- System.out.println("解密后:" + decrypt);
- }
-
- /**
- * 加密
- *
- * @param plaintext 明文
- * @return
- */
- public static String encrypt(String plaintext) {
- StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
- EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
- // 指定算法
- config.setAlgorithm("PBEWithMD5AndDES");
- // 指定秘钥,和yml配置文件中保持一致
- config.setPassword("haha");
- encryptor.setConfig(config);
- // 生成加密数据
- return encryptor.encrypt(plaintext);
- }
-
- /**
- * 解密
- *
- * @param data 加密后数据
- * @return
- */
- public static String decrypt(String data) {
- StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
- EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
- config.setAlgorithm("PBEWithMD5AndDES");
- config.setPassword("haha");
- encryptor.setConfig(config);
- // 解密数据
- return encryptor.decrypt(data);
- }
- }
执行加密算法,加密后数据如下图所示:
替换yml中数据库的密码:
将加密密码以明文形式写在配置文件中并不安全,实际开发中也不推荐这样使用。我们使用idea测试时,可以进行如下设置:
如果打包后部署项目,可以使用如下命令在启动项目时指定秘钥:
- #方式1:
- java -jar xxx.jar -Djasypt.encryptor.password=加密数据的秘钥
-
- #方式2:
- java -jar xxx.jar --jasypt.encryptor.password=加密数据的秘钥
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。