【问题标题】:ERROR: Failed to read the key from store:... Cannot recover key on Android Studio when generating Signed APK错误:无法从存储中读取密钥:... 生成签名 APK 时无法在 Android Studio 上恢复密钥
【发布时间】:2016-04-22 03:57:34
【问题描述】:

我正在尝试为我的新游戏生成发行版 apk。即使我在 3 天前更新了我的其他应用程序之一,密钥库也完全没有问题。我绝对确定我正确地记住了我的密码。因为当我输入错误的密码时,它会说您的密码或用户名不正确。

这就是我正在做的事情:

这就是我得到的:

请帮助我在这里做错了什么? Android Studio 于 2 天前更新。你认为它会导致这个问题吗?我该怎么办?任何帮助将不胜感激...

在我发布这个问题之前,我实际上已经阅读了这篇文章Android Studio: cannot recover key。尽管我遇到了以下提示,但我尝试按照他在回答中显示的那样做:“文件被篡改或密码不正确”。现在我知道密码是绝对正确的。恐怕我再也无法更新我的应用了。

【问题讨论】:

  • @AndroidMechanic 在发布此问题之前,我实际上已经阅读了该主题。尽管我遇到了以下提示,但我尝试按照他在回答中显示的那样做:“文件修改或密码不正确”。现在我知道密码是绝对正确的。恐怕我再也无法更新我的应用了。
  • KeyStore 密码和 Key 密码应该相同 :) 使用 keytool 更改两个密码 更改 KeyStore 密码 keytool -storepasswd -new newpassword -keystore KeyStore.jks 更改别名密钥密码 keytool -keypasswd -alias MyKeyAlias -new newpassword -keystore KeyStore.jks
  • 您有密钥备份吗?
  • @IntelliJAmiya 我实际上已经尝试过了。不幸的是,结果是相同的“文件修改或密码不正确”

标签: android android-studio apk alias keystore


【解决方案1】:

我建议您在此处使用此工具对别名密码进行智能单词列表攻击:

http://maxcamillo.github.io/android-keystore-password-recover/

  1. 使用上面的 URL 下载此项目的 JAR 文件。

  2. 创建一个名为 wordlist.txt 的文本文件,其中包含构成密码的单词和字符串,按照您认为它们出现的顺序排列。将您认为是密码一部分的每个字符串放在单独的行上。不要在每个字符串之间留空行。在此过程中,您可能需要多次修改 wordlist.txt 才能破解密码。您还可以尝试所有您认为是您的密码的变体。

  3. 将 wordlist.txt 保存到与 JAR 文件相同的文件夹中。

  4. 从命令行导航到包含 wordlist.txt 和 JAR 文件的目录。

  5. 在命令行输入:java -jar AndroidKeystoreBrute_v1.06.jar -k "full path to your keystore.jks" -d wordlist.txt 查看可用选项。您可能想尝试使用与我在测试中使用的不同的选项。

  6. 运行 java -jar AndroidKeystoreBrute_v1.06.jar -m 3 -k "keystore.jks 的完整路径" -d wordlist.txt

-m 选项指定破解密码的方法: 1 = 蛮力攻击(可能需要数周、数月或更长时间) 2 = 字典攻击(您的密码必须在字典中) 3 = 智能词列表攻击(您在 wordlist.txt 中指定的字符串)

我多次测试了我自己的别名密码,并在 wordlist.txt 中有许多不同的变体,它要么在不到 1 秒的时间内破解了我的密码,要么根本找不到密码。由于您认为您的别名密码与您的密钥库密码相同,因此此过程应该可以帮助您找到这两个密码。

我当然知道我的密码,所以我知道输入哪些字符串会起作用。但是由于您相当确定自己记住了密码,因此如果密码实际上与您所记得的密码非常接近,那么智能单词列表攻击应该会很快找到您的密码。

祝你好运!

将来您可能希望将密码存储在密码管理器中,并始终复制和粘贴密码。人类的记忆力非常适合记住一般的想法,而对于记住确切的项目或细节则完全不可靠。

【讨论】:

  • 首先感谢您的回答。后来,我试过你的方法后,效果很好。就像我想的那样,它给了我完全相同的密码。据我了解,这两个密码必须相同。否则它将无法正常工作。我相信他们应该在 Android Studio 中指出这一点。两个密码的开头相同,但在别名的末尾是别名。例如: pwpwpw 用于密钥库 pwpwpwalias 用于别名。比我尝试用 -keytool 更改它们虽然仍然没有好处。
  • @joshgoldeneagle 不要为我工作Exception in thread "main" java.lang.UnsupportedClassVersionError: AndroidKeystoreBrute/AndroidKeystoreBrute : Unsupported major.minor version 52.0
【解决方案2】:

经过一番研发,我得到了解决方案

您的“密钥库密码”和“密钥密码”必须相同。

【讨论】:

    【解决方案3】:

    在关注@joshgoldeneagle 回复后获得成功。 提示只给了我别名 passowrd 但使用 -w 功能我得到了一个密钥,其中两个密码都设置为恢复的密码。

    "-w 将证书保存在新的密钥库中,密码与密钥相同"

    java -jar AndroidKeystoreBrute_v1.06.jar -m 3 -k "keystore.jks 的完整路径" -d wordlist.txt -w

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多