Java 在加密属性文件中加密密码
问题 我使用的是ApacheCxf3.0.7,在中读到,您可以在Crypto属性文件中存储密钥库密码的(BASE-64编码)加密版本,但我不知道如何添加它,我没有找到此实现的示例 在ApacheWeb上显示: 加密属性文件内容的典型示例(例如 签名创建)如下所示: 请注意,用于加载密钥库的密码是明文。一个新的 Apache WSS4J 2.0.0的特点是能够存储 中密钥库密码的(BASE-64编码)加密版本 加密属性文件。定义了一个新的PasswordEncryptor接口 允许对密码进行加密/解密。违约 现在提供了基于Jasypt的实现,称为 JasyptPasswordEncryptor,它使用“PBewithmD5和Tripledes” WSPasswordCallback类还有一个名为 WSPasswordCallback.PASSWORD\u ENCRYPTOR\u PASSWORD,用于 返回用于PasswordEncryptor的主密码 实施当WSS4J通过 属性文件,并且它遇到了按以下格式加密的密码 “ENC(encoded encrypted password)”,它向回调处理程序查询 通过此WSPasswordCallback使用标记输入密码。有可能通过 通过新的 配置标记ConfigurationConstants.PASSWORD\u加密程序\u实例 (“passwordEncryptorInstance”) 可以将自定义密码加密程序实现传递给 WSS4J通过新的配置标签 ConfigurationConstants.PASSWORD\u加密程序\u实例 (“passwordEncryptorInstance”) 我想我必须在我的属性文件中声明如下内容:Java 在加密属性文件中加密密码,java,encryption,cxf,Java,Encryption,Cxf,问题 我使用的是ApacheCxf3.0.7,在中读到,您可以在Crypto属性文件中存储密钥库密码的(BASE-64编码)加密版本,但我不知道如何添加它,我没有找到此实现的示例 在ApacheWeb上显示: 加密属性文件内容的典型示例(例如 签名创建)如下所示: 请注意,用于加载密钥库的密码是明文。一个新的 Apache WSS4J 2.0.0的特点是能够存储 中密钥库密码的(BASE-64编码)加密版本 加密属性文件。定义了一个新的PasswordEncryptor接口 允许对密码进行加密/
org.apache.wss4j.crypto.merlin.keystore.password=ENC(?????)
if (usage==WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD){
????
}
但我不知道如何使用实现的默认JasyptPasswordEncryptor加密我的密码。
另外,我猜在我的CallbackHandler中我会有这样的东西:
org.apache.wss4j.crypto.merlin.keystore.password=ENC(?????)
if (usage==WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD){
????
}
解决方案
好的,随着测试的运行,我测试了我的解决方案,现在开始工作了
@Override
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
for (Callback callback: callbacks){
WSPasswordCallback pwdCallback= (WSPasswordCallback) callback;
final int usage =pwdCallback.getUsage();
if (usage==WSPasswordCallback.SIGNATURE||usage==WSPasswordCallback.DECRYPT){
pwdCallback.setPassword("parKeyPassword");
}
if (usage==WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD){
pwdCallback.setPassword("master_password");
}
}
}
}就是这样。。。现在,我必须弄清楚如何在外部local.property中使用Spring等。。但这是另一段历史。。谢谢大家! 此测试应能帮助您: 您可以通过使用主密码实例化JasyptPasswordEncryptor(如测试中所示)来获得加密密码,并加密密钥库密码。然后将其复制到您的加密属性中:
Colm.谢谢你的测试。。它现在可以工作了,当我尝试Jasypt命令行时,我的密码错了!;)