相关疑难解决方法(0)

使用AES SecretKey的Java KeyStore setEntry()

我目前正在使用Java中的密钥处理类,特别是使用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);
Run Code Online (Sandbox Code Playgroud)

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

我一直得到的异常是在我的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)
Run Code Online (Sandbox Code Playgroud)

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

在此先感谢您的帮助.

java encryption aes keystore

3
推荐指数
1
解决办法
7163
查看次数

标签 统计

aes ×1

encryption ×1

java ×1

keystore ×1