当前位置:   article > 正文

Java项目使用jasypt加密和解密配置文件中关键信息_java jasypt

java jasypt

一、使用背景
项目中application.yml 配置文件中,如数据库、redis、加密算法的私钥等各种配置的username,password的值都是明文的,其实存在一定的安全隐患,如果被人拿到这些配置文件,将直接对系统安全构成极大威胁,为了加密敏感配置,我们可以使用jasypt 的方式进行明文加密。

二、cmd命令行使用

jasypt.jar包下载地址: https://repo1.maven.org/maven2/org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar

加密命令

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=123456Ab algorithm=PBEWithMD5AndDES

input为你的明文密码。
password为盐值。
algorithm 是一个规则,请勿更改

加密过程和结果

解密命令

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input=bTd6xo3JQbyO4PO2iUWVNQ== password=123456Ab algorithm=PBEWithMD5AndDES

input为你的明文密码。
password为盐值。
algorithm 是一个规则,请勿更改

三、Java代码使用

项目中引入依赖 在pom.xml里面添加下面内容

  1. <!-- jasypt -->
  2. <dependency>
  3. <groupId>org.jasypt</groupId>
  4. <artifactId>jasypt</artifactId>
  5. <version>1.9.2</version>
  6. </dependency>

上代码JsyptUtil.java

  1. package com.jasypt.tool;
  2. import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
  3. import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
  4. public class JsyptUtil {
  5. public static void main(String[] args) {
  6. String s = encryptPassword("123456Ab", "root");
  7. System.out.println("root加密后:" + s);
  8. String salt = decryptPassword("123456Ab", s);
  9. System.out.println("root解密后:" + salt);
  10. }
  11. public static SimpleStringPBEConfig encryJsypt(String password) {
  12. // 加解密配置
  13. SimpleStringPBEConfig config = new SimpleStringPBEConfig();
  14. config.setPassword(password);
  15. config.setAlgorithm("PBEWithMD5AndDES");
  16. config.setKeyObtentionIterations("1000");
  17. config.setPoolSize("1");
  18. config.setProviderName("SunJCE");
  19. config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
  20. config.setStringOutputType("base64");
  21. return config;
  22. }
  23. /*
  24. * 加密操作
  25. */
  26. public static String encryptPassword(String password, String value) {
  27. PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
  28. SimpleStringPBEConfig config = encryJsypt(password);
  29. encryptor.setConfig(config);
  30. String resutl_encrypt = encryptor.encrypt(value);
  31. return resutl_encrypt;
  32. }
  33. /*
  34. * 解密操作
  35. */
  36. public static String decryptPassword(String password, String value) {
  37. PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
  38. SimpleStringPBEConfig config = encryJsypt(password);
  39. encryptor.setConfig(config);
  40. String result_decrypt = encryptor.decrypt(value);
  41. return result_decrypt;
  42. }
  43. }

运行结果

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/984682
推荐阅读
相关标签
  

闽ICP备14008679号