如何处理Android中丢失的密钥库密码?
我忘记了我的密钥库密码,我真的不知道该怎么做了(我不能也不会给任何借口)。我想更新我的应用程序,因为我刚刚修复了一个bug,但这已经不可能了。如果使用相同的密钥库但创建新密钥,会发生什么情况?我还能更新应用程序吗?如果不可能,我如何向用户提供更新版本的信息 如果有人遇到过这样的问题或遇到过麻烦,你能给出什么建议来帮助补救这种情况?幸运的是,这是一个免费的应用程序。请参见 不幸的是,当您丢失密钥库或密钥库的密码时,您的应用程序将被孤立。你唯一能做的就是用新的密钥重新向市场提交你的应用程序如何处理Android中丢失的密钥库密码?,android,keystore,Android,Keystore,我忘记了我的密钥库密码,我真的不知道该怎么做了(我不能也不会给任何借口)。我想更新我的应用程序,因为我刚刚修复了一个bug,但这已经不可能了。如果使用相同的密钥库但创建新密钥,会发生什么情况?我还能更新应用程序吗?如果不可能,我如何向用户提供更新版本的信息 如果有人遇到过这样的问题或遇到过麻烦,你能给出什么建议来帮助补救这种情况?幸运的是,这是一个免费的应用程序。请参见 不幸的是,当您丢失密钥库或密钥库的密码时,您的应用程序将被孤立。你唯一能做的就是用新的密钥重新向市场提交你的应用程序 始终备份
始终备份您的密钥库,并将密码写在安全的位置。对于可能遇到此问题的任何其他人,我想与您或浏览本文的其他人(如我自己)分享一个答案 我正在使用Eclipse,并在其中为我的1.0版本创建了密钥库。快进3个月,我想把它更新到1.1。当我选择导出时。。。在Eclipse中,我选择了那个密钥库,我记忆中的所有密码都不起作用。每次它说“密钥库被篡改或密码不正确。”我就准备在它上运行一个暴力程序,只要我能站起来(一周左右)就可以让它工作 幸运的是,我需要在Eclipse之外对未签名的.apk文件进行签名。瞧,成功了!我的密码一直都是正确的我不知道为什么,但是通过导出菜单在Eclipse中签名会报告一个错误,即使我的密码是正确的。 因此,如果您遇到此错误,以下是我的步骤(从中采取),以帮助您为市场准备好apk 注意:要从Eclipse获取未签名的apk:右键单击项目>Android工具>导出未签名的应用程序
adding: META-INF/MANIFEST.MF
...
signing: classes.dex
e。未签名的版本将被就地覆盖,因此已签名的apk文件现在与未签名的文件名相同Verifying alignment of signedaligned.apk (4)
50 META-INF/MANIFEST.MF (OK - compressed)
...
1047129 classes.dex (OK - compressed)
Verification succesful
d。签名并对齐的文件位于signedaligned.apk(您在上一个命令中指定的文件名)=======>准备好提交到市场如果提供了错误的密码,即使只有一次,它在下一次尝试时也会一直说: 密钥库被篡改或密码不正确 即使你提供了正确的答案。我试了好几次,也许是某种保护措施。
关闭导出向导并使用正确的密码重新启动它,现在它可以工作了:)事实上,丢失
密钥库密码不是问题。
您可以使用下面的keytool
命令创建新密钥库并为其设置新密码。您不需要原始密钥库密码:
keytool-importkeystore-srckeystore-path/to/keystore/with/遗忘/pw\
-destkeystore路径/to/my/new.keystore
出现提示时,为您的新.keystore
创建密码,并为源keystore密码(您丢失的)创建密码,只需按Enter键即可。
您将收到未检查完整性的警告,并且您将使用新设置的密码获得与原始密钥库相同的新.keystore
之所以这样做,是因为密钥库密码
仅用于提供密钥库
的完整性,它不会用它加密数据,而私钥密码
实际上会对私钥进行加密
请注意,您必须知道您的私钥密码才能对应用程序进行签名。好吧,如果它与忘记的密钥库密码相同,那么您可以像@Artur的回答一样求助于bruteforce。
这种方法对我一直有效。蛮力是你最好的选择
下面是一个帮助我的脚本:
您可以选择给它一个密码可能包含的单词列表,以便快速恢复(对我来说,它在中工作,我自己刚刚遇到这个问题-幸运的是,我能够在某个Gradle的临时文件中找到密码。以防万一有人在这里登陆:
尝试查找此文件
搜索
一般来说,如果你至少记得一部分密码,试着搜索一个包含这个子字符串的文件,希望你能找到一些东西
想把它扔到这里,也许它最终会帮助别人
编辑:添加了来自评论的新见解,只是为了更直观。
编辑2:添加了更多在评论中报告的位置
感谢Vivek Bansal、Amar Ilindra和Uzbekjon的帮助。在MAC启动控制台实用程序上,向下滚动至~/Library/Logs->AndroidStudio->idea.log.1(或任何旧日志号)
然后我搜索了“keystore”,它应该出现在日志中的某个地方
原始问题:首先下载AndroidKeystrubrute_v1.05.jar,然后按照
..Project\.gradle\2.4\taskArtifacts\taskArtifacts.bin
or
.gradle/3.5/taskHistory/taskHistory.bin
.gradle/5.1.1/executionHistory/executionHistory.bin
.gradle/caches/5.1.1/executionHistory/executionHistory.bin
.gradle/5.1.1/executionHistory/executionHistory.bin
.gradle/3.5/taskHistory/taskHistory.bin
.gradle/2.10/taskArtifacts/taskArtifacts.bin
storePassword
cd ~/Library/Logs/
-Pandroid.injected.signing.store.file=/Users/myuserid/AndroidStudioProjects/keystore/keystore.jks,
-Pandroid.injected.signing.store.password=mystorepassword,
-Pandroid.injected.signing.key.alias=myandroidkey,
-Pandroid.injected.signing.key.password=mykeypassword,
C:\Users\{Username}\.AndroidStudio2.2\system\log\idea.txt
Pandroid.injected.signing.store.password
signingConfigs {
config {
keyAlias 'My App'
keyPassword 'password'
storeFile file('/storefile/location')
storePassword 'anotherpassword'
}
}
keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks
keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks
java ChangePassword <oldKeystoreFileName.keystore> <newKeystoreFileName.keystore>
signingConfigs {
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
println MYAPP_RELEASE_KEY_PASSWORD
}
}
}
./app/build/intermediates/signing_config/release/out/signing-config.json
{"mName":"externalOverride","mStoreFile":"C:\\Users\\dAvInDeR\\Desktop\\KEYSTORE\\keystore.jks","mStorePassword":"1234@#abcd","mKeyAlias":"uploadkey","mKeyPassword":"1234@#abcd","mStoreType":"jks","mV1SigningEnabled":false,"mV2SigningEnabled":false}