第 168 章 Jasypt 组件
可作为 Camel 2.5 提供
Jasypt 是一个简化的加密库,使加密和解密变得更加简单。Camel 与 Jasypt 集成,以允许在 Properties 文件中加密敏感信息。通过丢弃这些加密值的类路径 camel-jasypt
通过 Camel 自动解密。这可确保人关注不能轻易发现敏感信息,如用户名和密码。
如果使用 Maven,则需要为这个组件添加以下依赖项到 pom.xml
中:
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-jasypt</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
如果您使用 Apache Karaf 容器,则需要为这个组件添加以下依赖项到 pom.xml
中:
<dependency> <groupId>org.apache.karaf.jaas</groupId> <artifactId>org.apache.karaf.jaas.jasypt</artifactId> <version>x.x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
168.1. 工具
Jasypt 组件提供了一些命令行工具来加密或解密值。
控制台会输出语法及其提供的选项:
Apache Camel Jasypt takes the following options -h or -help = Displays the help screen -c or -command <command> = Command either encrypt or decrypt -p or -password <password> = Password to use -i or -input <input> = Text to encrypt or decrypt -a or -algorithm <algorithm> = Optional algorithm to use
例如,若要 使用下列参数
加密运行的值:在 apache camel kit 中,cd 到 lib 文件夹并运行以下 java cmd,其中 & lt;CAMEL_HOME > 是您下载并提取 Camel 发行版。
$ cd <CAMEL_HOME>/lib $ java -jar camel-jasypt-2.5.0.jar -c encrypt -p secret -i tiger
输出以下结果
Encrypted text: qaEEacuW7BUti8LcMgyjKw==
这意味着,如果您知道 secret
的 master 密码,则 qaEEacuW7BUti8LcMgyjKw==
的加密表示可以重新解密为 tiger
。
如果您再次运行该工具,加密值将返回不同的结果。但解密值将始终返回正确的原始值。
因此,您可以使用以下参数运行该工具来测试它:
$ cd <CAMEL_HOME>/lib $ java -jar camel-jasypt-2.5.0.jar -c decrypt -p secret -i qaEEacuW7BUti8LcMgyjKw==
输出以下结果:
Decrypted text: tiger
然后,在 Properties 文件中使用这些加密值。注意密码值如何加密,并且值具有周围了 ENC (此处的值)
的令牌。
在运行 jasypt 工具时,如果您遇到 java.lang.NoClassDefFoundError: org/jasypt/encryption/pbe/StandardPBEStringEncryptor
意味着您必须在 classpath 中包含 jasypt7.10.jar。将 jar 添加到 classpath 的示例可以作为 jasypt7.10.jar 复制到 $JAVA_HOME\jre\lib\ext (如果您打算以 java -jar …
.后者可能使用 -cp
将 jasypt7.10.jar 添加到 classpath 中,在该情形中,您应提供主要类,以 eg: java -cp jasypt-1.9.2.jar:camel-jasypt-2.18.2.jar org.apache.camel.component.jasypt.Main -c encrypt -p secret -iger
-p