有没有一种简单的方法来确定java中的密钥库类型?密钥库文件没有扩展,但我知道它可能是jks或pkcs12。
目前我正在使用这样的东西:
public static boolean isJks(File f) throws Exception{
KeyStore ks = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(f);
ks = KeyStore.getInstance("jks");
ks.load(fis, null);
return true;
} catch (IOException e) {
if(fis != null){
fis.close();
}
fis = new FileInputStream(f);
ks = KeyStore.getInstance("pkcs12");
ks.load(fis, null);
return false;
} finally {
if(fis != null){
fis.close();
}
}
}
有更简单的方法吗?如果没有,那么这是要走的路还是应该改进?
答案 0 :(得分:0)
您可以按照this答案中的说明进行操作。基本上,对于JKS密钥库,您可以检查幻数,该幻数是文件开头的几个字节。预期的魔术值为0xFEEDFEED
。对于PKCS12,这不是一件容易的事,但是您可以检查文件是否为ASN1结构,尽管可能会存在基于ASN1的其他文件格式,所以您加载密钥库的方法实际上可能更好。 >