无法从 KeyStore 读取密钥
Can't read the key from KeyStore
我在使用 KeyStore 时遇到了一些问题。我将密钥添加到 KeyStore,但无法从那里获取。
我的代码:
try
{
KeyGenerator keygen = KeyGenerator.getInstance("AES");
SecureRandom random = new SecureRandom();
keygen.init(128, random);
SecretKey key = keygen.generateKey();
KeyStore ks = KeyStore.getInstance("UBER", "BC");
ks.load(null, pass);
ks.store(new FileOutputStream(path), pass);
ks.setKeyEntry(keyName, key, pass, null);
System.out.println(ks.containsAlias(keyName));
key = null;
KeyStore ks1 = KeyStore.getInstance("UBER", "BC");
ks1.load(new FileInputStream(path), pass);
System.out.println(ks1.containsAlias(keyName));
}
输出是:
true
false
似乎是密钥丢失或者我无法正确加载 KeyStore。你看到这里有什么错误吗?
您正在保存密钥库,然后再向其添加密钥。交换这两行:
ks.store(new FileOutputStream(path), pass);
ks.setKeyEntry(keyName, key, pass, null);
所以他们是:
ks.setKeyEntry(keyName, key, pass, null);
ks.store(new FileOutputStream(path), pass);
我在使用 KeyStore 时遇到了一些问题。我将密钥添加到 KeyStore,但无法从那里获取。 我的代码:
try
{
KeyGenerator keygen = KeyGenerator.getInstance("AES");
SecureRandom random = new SecureRandom();
keygen.init(128, random);
SecretKey key = keygen.generateKey();
KeyStore ks = KeyStore.getInstance("UBER", "BC");
ks.load(null, pass);
ks.store(new FileOutputStream(path), pass);
ks.setKeyEntry(keyName, key, pass, null);
System.out.println(ks.containsAlias(keyName));
key = null;
KeyStore ks1 = KeyStore.getInstance("UBER", "BC");
ks1.load(new FileInputStream(path), pass);
System.out.println(ks1.containsAlias(keyName));
}
输出是:
true
false
似乎是密钥丢失或者我无法正确加载 KeyStore。你看到这里有什么错误吗?
您正在保存密钥库,然后再向其添加密钥。交换这两行:
ks.store(new FileOutputStream(path), pass);
ks.setKeyEntry(keyName, key, pass, null);
所以他们是:
ks.setKeyEntry(keyName, key, pass, null);
ks.store(new FileOutputStream(path), pass);