我正在使用Jasypt将我们的数据库密码以非明文格式存储在我们的hibernate配置文件中。
而不是
<property name="hibernate.connection.username">user1</property>
<property name="hibernate.connection.password">password1</property>
我想要像
这样的东西 <property name="hibernate.connection.username">user1</property>
<property name="hibernate.connection.password">ENC(0HY4F73HFPQ85CN)</property>
我正在使用PBEWITHMD5ANDTRIPLEDES算法。我正在阅读它,似乎这可能需要安装JCE或“管辖政策”扩展。我的问题是,如果我在PBE算法列表中看到这些内容,这些东西是否已安装?
我运行了listAlgorithms.bat脚本:
C:\dev\jasypt-1.9.1\bin>listAlgorithms.bat
DIGEST ALGORITHMS: [MD2, MD5, SHA, SHA-256, SHA-384, SHA-512]
PBE ALGORITHMS: [PBEWITHMD5ANDDES, PBEWITHMD5ANDTRIPLEDES, PBEWITHSHA1ANDDESEDE, PBEWITHSHA1ANDRC2_40]
但是当我尝试加密密码时,我收到了一条非常无用的错误消息:
C:\dev\jasypt-1.9.1\bin>encrypt.bat input=etrading_rw_123 password=encryptionkey algorithm=PBEWITHMD5ANDTRIPLEDES
----ENVIRONMENT-----------------
Runtime: Sun Microsystems Inc. Java HotSpot(TM) Client VM 20.14-b01
----ARGUMENTS-------------------
algorithm: PBEWITHMD5ANDTRIPLEDES
input: etrading_rw_123
password: encryptionkey
----ERROR-----------------------
Operation not possible (Bad input or parameters)
如果我使用algorithm = PBEWITHMD5ANDDES运行相同的脚本,它可以正常工作。 “支持的算法”列表是否实际上意味着“如果启用它们将支持的算法”而不是“可以使用的算法”?
我使用的是Java版本:
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)
答案 0 :(得分:10)
由于Jasypt CLI使用说明中缺少一些信息,我遇到了这个问题。
用于生成初始值的默认生成器为NoIvGenerator
。对于某些/大多数算法,以这种方式生成的IV无效,因此显示了以上错误消息。您必须添加其他参数ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator
才能使其正常工作。
答案 1 :(得分:0)
https://www.oracle.com/technetwork/java/javase/downloads/jce-all-download-5170447.html
仅供参考: JDK 9和更高版本附带无限制的策略文件,并在默认情况下使用。
仅对于早于8u161、7u171和6u181的JDK 8、7和6更新,才需要上述可用的早期版本的不受限制的策略文件。在那些版本和更高版本中,策略文件已包括在内,但默认情况下未启用。
有关详细信息,请参见JDK-8170157。 https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8170157
JAVA_HOME
环境变量指向的是旧 Java版本。如果该环境变量存在,Jasypt的bin / *。sh和* .cmd脚本将使用$JAVA_HOME/bin/java
或%JAVA_HOME%\bin\java
。答案 2 :(得分:0)
我无法使用 PBEWITHHMACSHA512ANDAES_256 算法从命令提示符生成加密密码。我已经向命令添加了额外的参数并且它起作用了。
java -cp C:/Users/.m2/repository/org/jasypt/jasypt/1.9.3/jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI ivGeneratorClassName=org.jasypt.iv。 RandomIvGenerator input="originalpassword*" password=encryptionpassword algorithm=PBEWITHHMACSHA512ANDAES_256
通过使用上述命令,我能够生成加密密码并在 application.properties 文件中使用它。我为 Jasypt 使用了 3.0.0 spring 依赖项。