java之确定 keystore 类型是 pkcs12 还是 jks(以编程方式)
sharpest
阅读:31
2024-12-31 21:38:35
评论:0
有没有一种简单的方法来确定java中的 keystore 类型? keystore 文件没有扩展名,但我知道它可能是 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();
}
}
}
有没有更简单的方法来做到这一点?如果不是,那么这是要走的路还是应该改进?
请您参考如下方法:
您可以按照 this 中的说明进行操作回答。基本上,对于 JKS keystore ,您可以检查文件开头几个字节的魔数(Magic Number)。预期的魔法值为 0xFEEDFEED
.对于 PKCS12,这不是一件容易的事情,但是您可以检查文件是否为 ASN1 结构,尽管可能存在基于 ASN1 的其他文件格式,因此您加载 keystore 的方法实际上可能是更好的方法。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。