我正在使用 Java keystore 来存储 AES 加密的 key 。
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);
但是我遇到了异常。
Exception in thread "main" java.security.KeyStoreException: Uninitialized keystore
at java.security.KeyStore.setEntry(Unknown Source)
如何解决这个错误?提前致谢
最佳答案
根据KeyStore
文档,
Before a keystore can be accessed, it must be
loaded
.
所以您正在加载 KeyStore,但是如果 FileNotFoundException
发生在
fis = new java.io.FileInputStream("keyStoreName");
,因此如果文件不存在,我们将使用 null
值加载 KeyStore,例如 ks。加载(空,空);
。
关于java - 在 java 中使用 keystore 存储 AES key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21406884/