【问题标题】:Check android keystore keypass for correctness检查 android keystore keypass 的正确性
【发布时间】:2014-07-19 16:51:21
【问题描述】:

我正在自动化一些涉及 android keytool 和 jarsigner 的事情。该工具需要一个密钥库、密钥库的密码、别名名称和别名/密钥的密码,我正在尝试找到一种方法来显式检查为别名/密钥提供的密码是否正确.

有什么想法吗?此外,我需要在没有 jar 文件进行签名的情况下对其进行检查 - 在我的上下文中获取该文件很长,因此我希望尽早中止。

【问题讨论】:

  • 你能改一下正确答案吗?
  • 是的!虽然但该死的,我已经有一段时间没有碰过这些了。

标签: android keytool jarsigner


【解决方案1】:

您可以通过以下几种方式做到这一点:

A.与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

【讨论】:

    【解决方案2】:

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

    keytool -list -keystore <keystorefile> -storepass <passwordtocheck>
    

    【讨论】:

    • 我得到了这个 - 命令的语法不正确。
    • 请注意,这不会测试别名密码的正确性
    • @VijayKumar 下面的答案使用keytool -keypasswd 尝试更改别名的密码(更改为相同的密码),如果密码错误将失败。
    猜你喜欢
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2013-12-04
    • 1970-01-01
    相关资源
    最近更新 更多