Java KeyStore jceks.key.serialFilter 或 jdk.serialFilter 异常

问题描述

我已经尝试搜索,但我仍然没有找到问题的答案。

我使用 Java KeyStore 来存储对称 AES 密钥,

一切顺利,直到在获取密钥时向我抛出以下异常:

Exception in thread "main" java.security.UnrecoverableKeyException: Rejected by the jceks.key.serialFilter or jdk.serialFilter property
    at java.base/com.sun.crypto.provider.KeyProtector.unseal(KeyProtector.java:395)
    at java.base/com.sun.crypto.provider.JceKeyStore.engineGetKey(JceKeyStore.java:146)
    at java.base/java.security.KeyStore.getKey(KeyStore.java:1050)

我找到了一些解决方案,但它们对我的问题无效,它是一个关键的安全应用程序,我已经阅读了有关 java 序列化漏洞的信息,我不打算修改 java.ini 文件。 security 文件,我想知道是否有办法解决这个问题。

如何解决我为 PKCS12 证书实例化密钥库并且它工作正常,而不是 JCEKS,它会导致问题吗?

我正在使用以下 JRE:1.8.0_282,更改或升级它不是一个选项。

附上我的代码

//initialization of existent KeyStore
private static KeyStore init() throws KeyStoreException,NoSuchAlgorithmException,CertificateException,IOException
    {
        KeyStore keyStore = KeyStore.getInstance("JCEKS");
        keyStore.load(new FileInputStream(KeyStoreName),pwdArray);
        return keyStore;
    }
//key storage
public static void storeSimmetricKey(String alias,SecretKey key,final String pwd) throws KeyStoreException,IOException
    {
        KeyStore keyStore = init();
        Key sks = (Key) key;
        keyStore.setKeyEntry(alias,sks,pwd.tochararray(),null);
        keyStore.store(new FileOutputStream(KeyStoreName),pwd.tochararray());
    }
//key retrieve
public static Key getSimmetricKey(String alias,final String pwd) throws UnrecoverableKeyException,KeyStoreException,IOException
    {
        KeyStore keyStore = init();
        Key k = keyStore.getKey(alias,pwd.tochararray());
        return k;
    }

任何提示将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)