错误:无法从存储中读取密钥:...在生成签名APK时无法恢复Android Studio上的密钥。

8

我正在尝试为我的新游戏生成发布版apk。虽然我仅在3天前更新了我的另一个应用,但密钥库完全没有问题。我非常确定我记得我的密码正确。因为当我输入错误密码时,它会显示你的密码或用户名不正确。

这是我正在做的事情:

enter image description here

这是我得到的:

enter image description here

请帮我看看我在这里做错了什么?Android Studio 两天前更新了。你认为这会引起问题吗?我该怎么办?非常感谢任何帮助...
实际上,在发布这个问题之前,我已经阅读了这篇文章:Android Studio: cannot recover key。尽管我试图按照他的答案所示去做,但我遇到了这个提示:“文件被篡改或密码不正确”。现在我知道密码绝对是正确的。我担心我将永远无法更新我的应用程序。

3
可能是Android Studio:无法恢复密钥的重复问题。 - Viral Patel
@AndroidMechanic,我在发布这个问题之前实际上已经阅读了那个主题。尽管我按照他的答案所示尝试了一下,但我遇到了这个提示:“文件被篡改或密码不正确”。现在我知道密码绝对是正确的。我担心我将永远无法更新我的应用程序。 - Les Paul
2
KeyStore密码和Key密码应该相同 :) 使用keytool同时更改两个密码更改KeyStore密码 keytool -storepasswd -new newpassword -keystore KeyStore.jks 更改别名密钥密码 keytool -keypasswd -alias MyKeyAlias -new newpassword -keystore KeyStore.jks - IntelliJ Amiya
你有备份密钥吗? - Stanojkovic
@Les Paul 你运气如何了? - Stanojkovic
显示剩余5条评论
3个回答

2
我建议您使用这个工具对别名密码运行智能单词列表攻击: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 "您的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中指出这一点。这两个密码的开头是相同的,但在别名的结尾处却写着alias。例如:pwpwpw for keystore pwpwpwalias for alias。然后我尝试用-keytool更改它们,但仍然不行。 - Les Paul
@joshgoldeneagle 对我不起作用 Exception in thread "main" java.lang.UnsupportedClassVersionError: AndroidKeystoreBrute/AndroidKeystoreBrute : Unsupported major.minor version 52.0 - FilipeOS

1

经过一些研究和开发,我找到了解决方案

你的“密钥库密码”和“密钥密码”需要相同。


0

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接