Java 第三方包-Jasypt

wiki

Jasypt ,Java Simplified Encryption ,是一个简单的加密工具包,它可以提供高安全性的加密技术,并与 Hibernate、Spring 等框架有很好的相融性。

1. 引入

1
2
3
4
5
6
7
8
9
<properties>
<jasypt.version>1.9.3</jasypt.version>
</properties>

<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt</artifactId>
<version>${jasypt.version}</version>
</dependency>

2. 使用

加解密可以编写 Java 代码或直接使用 jar 命令调用工具包。

1. 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
// 1. 创建标准字符串加密器实例
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
// 2.1. 设置加密算法
encryptor.setAlgorithm("PBEWithMD5AndDES");
// 2.2. 设置加解密盐值
encryptor.setPassword("salt");
// 2.3. 设置 AES 初始化向量
encryptor.setIvGenerator(new NoIvGenerator());

// 加密
String encryptedText = encryptor.encrypt(MY_PASSWORD);
// 解密
String plainText = encryptor.decrypt(MY_Encrypted_PASSWORD);

2. jar 包

1. 加密

1
2
3
4
5
6
java -cp jasypt-1.9.3.jar \
org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI \
algorithm=PBEWithMD5AndDES \
password=salt \
ivGeneratorClassName=org.jasypt.iv.NoIvGenerator \
input="MY_PASSWORD"

结果输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
----ENVIRONMENT-----------------

Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.202-b08



----ARGUMENTS-------------------

algorithm: PBEWithMD5AndDES
input: abc123
password: salt



----OUTPUT----------------------

Kh4BPjpQIt00Af/s+1Fx8w==
  • org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI 为加密使用的类
  • algorithm: 加密算法
  • password: 盐值(后面解密也需使用这个盐值进行解密)
  • input:待加密的内容
  • ivGeneratorClassName : AES 初始的向量类
  • OUTPUT: 加密之后的内容

2. 解密

1
2
3
4
5
6
java -cp jasypt-1.9.3.jar \
org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI \
password=salt \
algorithm=PBEWithMD5AndDES \
ivGeneratorClassName=org.jasypt.iv.NoIvGenerator \
input="MY_Encrypted_PASSWORD" \

输出结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
----ENVIRONMENT-----------------

Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.202-b08



----ARGUMENTS-------------------

algorithm: PBEWithMD5AndDES
input: Kh4BPjpQIt00Af/s+1Fx8w==
password: salt



----OUTPUT----------------------

abc123
  • org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI 为解密使用的类
  • 其他参数同加密

3. Spring 结合

引入包

1
2
3
4
5
6
7
8
9
<properties>
<jasypt.spring.boot.version>3.0.4</jasypt.spring.boot.version>
</properties>

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

配置项:

1
2
3
jasypt.encryptor.password=salt
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator

使用时,在配置文件中,将明文使用上述方式加密后,将密文替换明文,并用 ENC 包裹:

1
datasource.password=ENC(Kh4BPjpQIt00Af/s+1Fx8w==)