如何解决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 举报,一经查实,本站将立刻删除。