You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Java 8 JRE 172打开JCEKS密钥库报Invalid secret key format异常

JCEKS密钥库加载异常及后续类加载问题排查

最近我在Windows系统上使用Oracle Java 8 JRE 172版本打开JCEKS类型密钥库时,遇到了以下异常——之前用旧版JRE是可以正常运行的:

INFO: ObjectInputFilter REJECTED: null, array length: -1, nRefs: 1, depth: 1, bytes: 70, ex: n/a [...call stacks omitted to protect the innocent...] 
Caused by: java.io.IOException: Invalid secret key format 
at com.sun.crypto.provider.JceKeyStore.engineLoad(JceKeyStore.java:856) 
at java.security.KeyStore.load(Unknown Source) [...]

这个问题和JDK-8202506的情况类似,但我用的是Java 8,而且初始INFO消息里出现了null,想问问这是不是同一个问题?另外,JDK-8202506是不是没有在公开的JRE版本里修复?

更新1

我找到了一个类似的问题ATLAS-2642,但同样没有找到解决方案。

更新2

升级之后,Equinox找不到com.sun.crypto.provider.SealedObjectForKeyProtector类,尽管这个类明明在新JDK的JRE里存在,报错信息如下:

BundleClassLoader[foo.bar.baz.crypto].loadClass(com.sun.crypto.provider.SealedObjectForKeyProtector) failed. 
java.lang.ClassNotFoundException: com.sun.crypto.provider.SealedObjectForKeyProtector 
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:481) 
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:397) 
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:385) 
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:348) 
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:686) 
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1866) 
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1749) 
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2040) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571) 
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) 
at com.sun.crypto.provider.JceKeyStore.engineLoad(JceKeyStore.java:850) 
at java.security.KeyStore.load(KeyStore.java:1445)

更新3

我发现sunjce_provider.jar里的SealedObjectForKeyProtector.class和其他类不一样,用JD-GUI反编译的时候会出现内部错误,其他类都没有这个问题:
JD-GUI反编译SealedObjectForKeyProtector.class失败

内容的提问来源于stack exchange,提问作者wilx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:15:04