我在IBM Websphere下面的第4行代码中遇到以下错误 Liberty Profile 16.0.0
InputStream keystoreStream = EncryptionUtility.class.getResourceAsStream(keyStoreLocation);
KeyStore keystore = KeyStore.getInstance("JCEKS");
keystore.load(keystoreStream, storePass.toCharArray());
Key key = keystore.getKey(alias, keyPass.toCharArray());
导致以下异常:
Caused by: java.security.UnrecoverableKeyException: com.ibm.crypto.provider.AESSecretKey
at com.sun.crypto.provider.KeyProtector.unseal(KeyProtector.java:358)
at com.sun.crypto.provider.JceKeyStore.engineGetKey(JceKeyStore.java:133)
at java.security.KeyStore.getKey(KeyStore.java:804)
at com.comdata.base.helper.EncryptionUtility.initSymmetricKey(EncryptionUtility.java:134)
为什么会发生这种情况?是否需要为加密配置任何内容?
我在JDK 7中查看了keyProtector.java的代码,并且ClassNotFoundException触发了UnrecoverableKeyException com.ibm.crypto.provider.AESSecretKey
我们是否需要通过installUtility安装任何功能?
答案 0 :(得分:0)
为什么会发生这种情况?是否需要为加密配置任何内容?
未找到的类(com.ibm.crypto.provider.AESSecretKey
)来自IBM JDK。
看起来您的密钥库是使用IBM JDK创建的,因此其中包含一个使用IBM JDK中的AESSecretKey
的密钥。
在运行时,您的Liberty服务器可能正在使用非IBM JDK,其中不包含此IBM JDK特定类。
我们是否需要通过installUtility安装任何功能?
不。缺少的类应该由JDK提供,而不是Liberty功能。