2016-04-02 230 views
1

我在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 

好像键即消失或我不能corectly加载密钥库。你看到这里有什么错误吗?

回答

3

在添加密钥之前,您正在保存密钥库。互换这两行:

 ks.store(new FileOutputStream(path), pass); 
     ks.setKeyEntry(keyName, key, pass, null); 

所以,他们分别是:

 ks.setKeyEntry(keyName, key, pass, null); 
     ks.store(new FileOutputStream(path), pass); 
+0

伟大的答案,谢谢!奇迹般有效!在将密钥添加到KeyStore之前没有看到我存储。 – Michu93