所有加解密都在浏览器本地完成(纯 JavaScript 实现,与 Jasypt 默认的 PBEWithMD5AndDES 兼容),密码和原文不会发送到任何服务器。

Spring 中使用 Jasypt

Spring 的配置文件中会有一些敏感信息,如数据库密码,因此有时我们希望将敏感信息加密,Jasypt 就是其中比较方便的工具。

Jasypt 是一个 jar 包,实现了常用的一些加解密算法,在 Spring 中使用一般会用相应的 Spring starter 包,在 pom.xml 中加入依赖

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

接下来就可以在 application.yaml 中指定加密的配置,例如 spring.datasource.password: pass@1,则可以加密如下:

spring.datasource.password: ENC(o9FgF1JelkE/l2TrOd0iHg==)
jasypt.encryptor.password: secret

具体来说,加密的内容需要用 ENC(..) 括起来,加密用的密码通过 jasypt.encryptor.password 指定。

因为必须要解密,密码就需要放在配置文件里,或者放在代码中:

System.setProperty("jasypt.encryptor.password", ConstantValue.JASYPT_ENCRYPTOR_PASSWORD);

当然也可以把密码放在环境变量中,不过总体而言,客户端加密是个防君子不防小人的方法。