2012-02-07 85 views

回答

0

JCEKS是与JCE一起引入的SUN格式类型。

这并不意味着它仅受SUN/Oracles的JDK支持。

您应该也可以在IBM JDK中使用它(当然,使用IBM提供程序)。退房IBM Security

+2

我已经试过了,虽然IBM JDK支持JCEKS,但它不能加载由等效的Sun JDK创建的JCEKS密钥库。获取异常“java.io.IOException:com.sun.crypto.provider.SealedObjectForKeyProtector at com.ibm.crypto.provider.JceKeyStore.engineLoad(Unknown Source)at java.security.KeyStore.load(KeyStore.java:414) “ - 有趣的是,由IBM JDK keytool创建的KeyStore似乎在Sun/Oracle JDK中加载时工作正常。 – ammianus 2013-04-17 20:40:53

+0

@ammianus:我不觉得很难相信这一点,甚至没有尝试它。我经历了IBM和SUN之间的许多差异,它并不让我感到惊讶。感谢分享 – Cratylus 2013-04-18 09:26:00

+0

谢谢,但实际上我对我的评论有一个更正。我在测试中发现错误,导致太阳侧的密钥存储文件错误。在Sun JRE上加载时,IBM keytool生成的JCEKS密钥库也失败:java.security.UnrecoverableKeyException:com.ibm.crypto.provider.DESedeKey \t at com.sun.crypto.provider.SunJCE_z.a(DashoA13 * ..) – ammianus 2013-04-24 17:27:08

1

IBM的JDK无法加载使用SUN的JDK创建的密钥库。因此,在IBM机器上,如果您想使用密钥库,则应该仅使用IBM的JDK创建它。

要使用IBM的JDK创建新的密钥库,请参阅this

1

您可以将IBMJCE与使用SunJCE创建的JCEKS密钥库一起使用。有可能使用keytool密码既为密钥库提供密码,也为securekey本身提供单独的密码。当使用keyman IBM密钥管理器或您自己的类与IBMJCE从JCEKS获取安全密钥时,您可能会收到com.sun.crypto.provider.SealedObjectForKeyProtector错误。解决方法是将密钥库和securekey的密码设置为相同的值。

相关问题