gpt4 book ai didi

Java KeyStore setEntry() 使用 AES SecretKey

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:47:32 25 4
gpt4 key购买 nike

我目前正在研究 Java 中的 key 处理类,特别是使用 KeyStore。我正在尝试使用 AES 实例生成一个 SecretKey,然后使用 setEntry() 方法将它放在 KeyStore 中。

我已经包含了我的代码的相关部分:

// The KS Object
private KeyStore keyStore;

private KeyStore.SecretKeyEntry secretKeyEntry;
private KeyStore.ProtectionParameter protectionParameter;

private KeyGenerator keyGenerator;
private SecretKey secretKey, newSecretKey;


keyStore = KeyStore.getInstance(KeyStore.getDefaultType());

keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(256);

newSecretKey = keyGenerator.generateKey();

protectionParameter = new KeyStore.PasswordProtection(KEYSTORE_PASSWORD.toCharArray());
secretKeyEntry = new KeyStore.SecretKeyEntry(newSecretKey);

keyStore.setEntry(KEYSTORE_ALIAS, secretKeyEntry, protectionParameter);

我使用的两个常量也被定义为字符串。

我不断收到的异常是在我的 setEntry() 调用中:

java.security.KeyStoreException: Cannot store non-PrivateKeys
at sun.security.provider.JavaKeyStore.engineSetKeyEntry(Unknown Source)
at sun.security.provider.JavaKeyStore$JKS.engineSetKeyEntry(Unknown Source)
at java.security.KeyStoreSpi.engineSetEntry(Unknown Source)
at java.security.KeyStore.setEntry(Unknown Source)

我主要使用这个文档 http://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html作为引用,以及一些其他来源。

在此先感谢您的帮助。

最佳答案

我找到了 this作为 stackoverflow 上未接受的答案:

The "Cannot store non-PrivateKeys" error message usually indicates you are trying to use secret symmetric keys with a JKS keystore type. The JKS keystore type only supports asymmetric (public/private) keys. You would have to create a new keystore of type JCEKS to support secret keys.

虽然我的内存告诉我这是正确的,但很难证实这一点。

关于Java KeyStore setEntry() 使用 AES SecretKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com