toDerInputStream拒绝标签类型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();
}
}
任何想法,我怎么能解决这个问题呢?
答
看起来您的.p12
文件不是PKCS#12文件,而是不同的密钥存储类型。我试图用Keystore Explorer打开它,它试图使用每个可用密钥存储类型(PKCS12,BKS,JKS,...)打开文件。
它它可以加载文件,你会看到文件中的信息在加载算法成功的主寡妇的底部。
谢谢。它确实不是PKCS#12文件,而是BKS。 –