【发布时间】:2014-01-28 13:28:25
【问题描述】:
我正在使用 Java 密钥库来存储用于 AES 加密的密钥。
final String strToEncrypt = "Hello World";
KeyGenerator kg = KeyGenerator.getInstance("AES");
kg.init(128);
SecretKey sk = kg.generateKey();
String secretKey = String.valueOf(Hex.encodeHex(sk.getEncoded()));
//Storing AES Secret key in keystore
KeyStore ks = KeyStore.getInstance("JCEKS");
char[] password = "keystorepassword".toCharArray();
java.io.FileInputStream fis = null;
try {
fis = new java.io.FileInputStream("keyStoreName");
ks.load(fis, password);
} finally {
if (fis != null) {
fis.close();
}
KeyStore.ProtectionParameter protParam =
new KeyStore.PasswordProtection(password);
KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(sk);
ks.setEntry("secretKeyAlias", skEntry, protParam);
但我得到以下异常。
线程“主”java.security.KeyStoreException 中的异常:未初始化的密钥库
在 java.security.KeyStore.setEntry(Unknown Source)
如何解决这个错误?提前致谢
【问题讨论】:
-
欢迎来到 Stack Overflow!我建议您阅读
KeyStore课程的文档,自己尝试一下,如果遇到困难请告诉我们。 -
请尝试使用 jceks 密钥库进行至少适度的保护,并选择难以破解的密码(例如包含组成词的句子)。
-
不要这样写代码。取决于先前
try块中代码成功的代码应该在该try块内。在您的情况下,如果未找到该文件,则不会初始化密钥库,因此您不应执行剩余的代码。
标签: java encryption aes keystore