检查android keystore keypass的正确性

时间:2014-05-30 02:05:23

标签: android keytool jarsigner

我自动执行涉及android keytool和jarsigner的一些事情。该工具获取密钥库,密钥库的密码,别名和别名/密钥的密码,我试图找到一种方法来显式检查是否提供了别名/密钥的密码是对的。

有什么想法吗?另外,我需要在没有jar文件的情况下检查它 - 在我的上下文中获取该文件很长,所以我想早点而不是晚点中止。

2 个答案:

答案 0 :(得分:47)

您也可以在不尝试更改密码的情况下检查密码是否正确。我通过使用以下命令列出密钥库的属性来完成它:

node-curl

答案 1 :(得分:16)

你可以通过以下两种方式实现:

一个。使用keytool

如果您运行命令keytool -keypasswd -keystore <keystore> -alias <alias> -storepass <storepass> -keypass <keypass> -new <keypass>,那么如果密钥库密码错误,您将收到错误Keystore was tampered with, or password was incorrect,如果别名密码错误,则会收到错误Cannot recover key。不幸的是,在这两种情况下返回代码都是1,所以如果你想对错误类型保持聪明,你需要解析程序的输出。

B中。使用小型Java程序

这些方面的东西:

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

try (FileInputStream fis = new FileInputStream(keystore)) {
    ks.load(fis, ksPw.toCharArray());
}

ks.getEntry(alias, new KeyStore.PasswordProtection(aliasPw.toCharArray()));
如果密钥库密码错误,

将在第4行失败java.io.IOException;如果别名密码错误,则第7行将失败java.security.UnrecoverableKeyException