2017-08-25 415 views
0

在我的Android應用程序中,我有一個名爲keystore.p12的密鑰庫文件,位於/data/data/com.company.myapp/files。我拉這個特定的文件,現在我想檢索存儲在其中的密鑰。toDerInputStream拒絕標籤類型0 - 無法讀取密鑰庫中的密鑰

>keytool.exe -list -keystore C:\Users\user\Desktop\keystore.p12 -storepass letmein -storetype PKCS12 -v 

不幸的是,我得到以下錯誤:

keytool error: java.io.IOException: toDerInputStream rejects tag type 0 
java.io.IOException: toDerInputStream rejects tag type 0 
     at sun.security.util.DerValue.toDerInputStream(DerValue.java:874) 
     at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1915) 
     at java.security.KeyStore.load(KeyStore.java:1445) 
     at sun.security.tools.keytool.Main.doCommands(Main.java:795) 
     at sun.security.tools.keytool.Main.run(Main.java:343) 
     at sun.security.tools.keytool.Main.main(Main.java:336) 

我試圖與Java同樣的事情,但我遇到了同樣的異常

我用keytool這樣試了一下:

public static void main(String[] args) { 
     try { 
      FileInputStream is = new FileInputStream("C:\\Users\\user\\Desktop\\keystore.p12"); 
      KeyStore keystore = KeyStore.getInstance("pkcs12"); 
      keystore.load(is, "letmein".toCharArray()); 
      is.close(); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

任何想法,我怎麼能解決這個問題呢?

回答

1

看起來您的.p12文件不是PKCS#12文件,而是不同的密鑰存儲類型。我試圖用Keystore Explorer打開它,它試圖使用每個可用密鑰存儲類型(PKCS12,BKS,JKS,...)打開文件。

它它可以加載文件,你會看到文件中的信息在加載算法成功的主寡婦的底部。

+0

謝謝。它確實不是PKCS#12文件,而是BKS。 –