我正在尝试更新我的 Android 应用,但我忘记了密钥库密码。
当我输入 keytool -list -v -keystore keystore.jks
时,我被要求输入密码,当我按回车键输入空密码时,我看到
Alias name: xxxx
Creation date: Jun 24, 2020
Entry type: PrivateKeyEntry
对于所有其他密码,我得到 keystore password was incorrect
现在我想更改我的密码,所以我输入 keytool -storepasswd -keystore keystore.jks
,当我被要求输入密码时 - 我按回车键输入一个空密码,但我收到一个错误的密码异常。
我无法得到它,如果我的密码是空的,为什么我在更改它时会收到错误的密码错误。如果我的密码不为空,为什么我输入空密码时会看到密钥列表?
我也有一些私钥,也许可以帮上忙
答案 0 :(得分:1)
我无法得到它,如果我的密码是空的,为什么我在更改它时会收到错误的密码错误。如果我的密码不为空,为什么我输入空密码时会看到密钥列表?
关键名称和日期列表不被视为敏感信息。
根据Oracle keytool
documentation:
“必须为访问密钥库内容的所有命令提供密码。对于此类命令,当命令行中未提供 -storepass
选项时,系统会提示用户输入密码。”
“从密钥库中检索信息时,密码是可选的。如果未指定密码,则无法验证检索到的信息的完整性并显示警告。”
我同意这不清楚,但对我来说这意味着 --list
只检索信息而不是密钥库内容不需要密码......正如我们观察到的那样。
至于您提供错误密码的情况。好吧,如果您提供的密码是错误的,那么 keytool
命令应该至少会给您一条错误消息。如果要继续向您提供列表,那将是 (IMO) 相当奇怪。
但最重要的是 keytool
的行为就像它在这种边缘情况下的行为一样。确切地知道为什么不能帮助您解决丢失密码的问题。 (我认为解决这个问题的唯一途径是尝试暴力破解密码。)
答案 1 :(得分:0)
对于明显的不一致我没有任何解释(我有一段时间没有做过 Android 开发),但是如果结果证明您只需要恢复密码,有时可能会根据您的平台和其他情况进行恢复。请参阅this question 的答案中的方法。