spring boot使用jasypt加密原理解析
-
用法一
先看用法有多简单,以springboot为例:
-
Application.java上增加注解@EnableEncryptableProperties;
-
增加配置文件jasypt.encryptor.password = guaijushi@cblog,这是加密的秘钥;(可自定义)
-
所有明文密码替换为ENC(加密字符串),例如ENC(XW2daxuaTftQ+F2iYPQu0g==);
-
引入一个MAVEN依赖;
maven坐标如下:
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot</artifactId> <version>2.0.0</version> </dependency>
简答的4步就搞定啦,是不是超简单?完全不需要修改任何业务代码。 其中第三步的加密字符串的生成方式为:
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="123456" password=guaijushi@cblog algorithm=PBEWithMD5AndDES
其中:input的值就是原密码。
password的值就是参数
jasypt.encryptor.password指定的值,即秘钥。
-
用法二
其实还有另一种更简单的姿势:
-
增加配置文件jasypt.encryptor.password = guaijushi@cblog,这是加密的秘钥;(可自定义)
-
所有明文密码替换为ENC(加密字符串),例如ENC(XW2daxuaTftQ+F2iYPQu0g==);
-
引入一个MAVEN依赖;
maven坐标如下:
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency>
相比第一种用法,maven坐标有所变化。但是不需要显示增加注解@EnableEncryptableProperties;
附送加解密代码
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig; public class JasyptTest { public static void main(String[] args) { testEncrypt(); // testDe(); } private static void testEncrypt() { StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor(); EnvironmentPBEConfig config = new EnvironmentPBEConfig(); config.setAlgorithm("PBEWithMD5AndDES"); // 加密的算法,这个算法是默认的 config.setPassword("guaijushi@cblog"); // 加密的密钥 standardPBEStringEncryptor.setConfig(config); String plainText = "suibianxie"; String encryptedText = standardPBEStringEncryptor.encrypt(plainText); System.out.println(encryptedText); } private static void testDe() { StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor(); EnvironmentPBEConfig config = new EnvironmentPBEConfig(); config.setAlgorithm("PBEWithMD5AndDES"); config.setPassword("guaijushi@cblog"); standardPBEStringEncryptor.setConfig(config); String encryptedText = "aHsFtlQjatrOP2s8bfLGkUG55z53KLNi"; String plainText = standardPBEStringEncryptor.decrypt(encryptedText); System.out.println(plainText); } }
具体就不赘述了 请查看http://t.csdn.cn/NutrJ