如何在Android中处理丢失的KeyStore密码?
我已经忘记了我的密码存储密码,我不知道该怎么办(我不能或不会给出任何借口)。 我想更新我的应用程序,因为我只是修复了一个错误,但不能再修复了。 如果我使用相同的密钥库,但创build一个新的密钥会发生什么? 我仍然可以更新应用程序,如果不可能,我怎么能给用户提供有关更新版本的信息?
如果有人遇到这样的问题或遇到麻烦,你可以给些什么build议来帮助解决问题? 幸运的是,这是一个免费的应用程序。
看到这个链接
这是不幸的,但是当你失去了你的密钥库或密钥库的密码时,你的应用程序就成了孤儿。 你唯一能做的就是用新密钥重新提交你的应用程序到市场。
始终备份您的密钥库并将密码写在安全的地方。
刚刚遇到这个问题 – 幸运的是我能够在一些Gradle的临时文件中find密码。 万一有人在这里,请尝试寻找
..Project\.gradle\2.4\taskArtifacts\taskArtifacts.bin
那里是明文。 一般来说,如果您确实记得密码的至less一部分,请尝试search包含此子string的文件,并希望您能找出一些东西。
想要扔在这里,也许最终会帮助别人。
如果提供了错误的密码,即使只是一次,也会在下次尝试时说:
密钥库被篡改或密码不正确。
即使你提供了正确的。 我试了好几次,也许是某种保护。
closures导出向导并用正确的密码重新启动它,现在它工作:)
妓女是你最好的select!
这是一个帮助我的脚本:
https://code.google.com/p/android-keystore-password-recover/wiki/HowTo
您可以select给它一个密码可能包括一个非常快速的恢复(对我来说,它在1秒内工作)
在MAC启动控制台实用程序,并滚动到〜/库/日志 – > AndroidStudio – > idea.log.1(或任何旧的日志号)然后我search“密钥库”,它应该出现在日志的某处。
原始问题: 链接
事实上,丢失keystore password
不是问题。
您可以使用下面的keytool命令创build新的密钥库并为其设置新的密码。 您不需要原始密钥库密码:
keytool -importkeystore -srckeystore path/to/keystore/with/forgotten/pw \
-destkeystore path/to/my/new.keystore
出现提示时,为您的new.keystore
和源密钥库密码 (丢失)创build密码,然后按Enter键 。
您将得到未被检查的完整性警告,并且您将使用新设置的密码获得与原始相同的new.keystore。
这样做的原因是keystore password
仅用于提供keystore
完整性,它不会用它来encryption数据,而private key password
实际上保持您的私钥被encryption。
请注意,您必须知道您的private key password
才能签署您的应用程序。 那么,如果它与被遗忘的keystore password
相同,那么你可以诉诸于@阿图尔的回答中的暴力。
这种方法一直为我工作。
幸运的是,我从我的Android工作室日志中发现了丢失的密码以及密钥库path和别名。
如果你正在运行基于Linux / Unix的机器。
导航到“库日志”目录
cd ~/Library/Logs/
在那里,如果你还记得你用来构build最后一个版本APK的Android工作室版本。 导航到该目录
例如:cd AndroidStudio1.5 /
在那里你会find日志文件。 在任何日志文件(idea.log)中,您都可以find您的密钥库凭证
例
-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,
我希望这有助于Android Studio用户
对于任何可能碰到这个问题的人,我想分享一个可能是你或者浏览这篇文章的其他人的答案(就像我一样)。
我正在使用Eclipse,并为我的1.0版本创build了我的密钥库。 快进3个月,我想把它更新到1.1。 当我在Eclipse中select“导出…”并select了该密钥存储库时,没有任何我能记得的密码工作。 每次它说“密钥库被篡改或密码不正确”。 只要我能够坚持一个星期左右的时间,我就准备好运行一个powershell计划,试图让它运转起来。
幸运的是,我在Eclipse之外签署了我的无符号.apk文件。 瞧 – 它的工作! 我的密码一直是正确的! 我不知道为什么,但通过“导出”菜单在Eclipse中进行签名,即使密码正确,也会报告错误。
所以,如果你得到这个错误,这里是我的步骤(从Android文档中获取)来帮助你准备好你的apk。
注意:从Eclipse获取未签名的apk:右键单击项目> Android工具>导出未签名的应用程序
-
使用密钥库签署未签名的apk文件
一个。 打开pipe理员cmd提示符,并转到“C:\ Program Files \ Java \ jdk1.6.0_25 \ bin”或任何版本的Java你已经(复制未签名的apk文件和你的密钥库)
湾 在cmd提示符下input以下命令:jarsigner -keystore mykeystorename.keystore -verbose unsigned.apk myaliasnamefromkeystore
C。 它会说:“为密钥库input密码:”。 input它并按回车。
d。 ===>成功看起来像这样:
adding: META-INF/MANIFEST.MF ... signing: classes.dex
即 未签名的版本将被覆盖,所以您签名的apk文件现在与未签名的文件名称相同
-
使用ZipAlign压缩已签名的apk文件,以便在市场上发行
一个。 打开pipe理cmd提示符并转到“c:\ AndroidSDK \ tools”或安装Android SDK的位置
湾 input这个命令:zipalign -v 4 signed.apk signedaligned.apk
C。 ===>成功看起来像这样:
Verifying alignment of signedaligned.apk (4) 50 META-INF/MANIFEST.MF (OK - compressed) ... 1047129 classes.dex (OK - compressed) Verification succesful
d。 签名和alignment的文件位于signedaligned.apk(您在前面的命令中指定的文件名)
========>准备提交给MARKETPLACE
首先下载AndroidKeystoreBrute_v1.05.jar,然后按照给定的图像。
准备一个像wordlist.txt这样的文件列表,在那个文件里给你提示
密码提示:
用户
用户
密码
密码
pa55word
密码
@
*
#
$
&
1
2
123
789
你会得到你的密码。
我觉得我需要把它作为一个答案,因为这不能只是在评论。 就像@ ElDoRado1239在他的回答中所说 (不要忘记提高他的答案;)
- 寻找
..Project\.gradle\2.4\taskArtifacts\taskArtifacts.bin
在我的情况是在..Project\.gradle\2.2.1\taskArtifacts\taskArtifacts.bin
因为我使用gradle 2.2.1
- 然后寻找
storePassword
像@Moxet Khan在评论中说…在我的情况是在线signingConfig.storePassword¬í t my.forgoten.password—signingConfig.keyAlias
我signingConfig.storePassword¬í t my.forgoten.password—signingConfig.keyAlias
希望帮助别人!
花了近一天的时间研究在Android Studio中恢复丢失的密钥库密码的可能选项。 我发现以下4种可能的方式来做到这一点:
-
使用AndroidKeystoreBrute来检索你的密码。 当你部分忘记你的密码时,这个方法是非常有用的,这意味着你仍然有一些你的密码的提示。
-
如果您以前使用同一台计算机发布了应用程序(您可以find密钥存储库密码),也可以通过Android Studio日志文件进行检索。 参考以下目录:
Mac OSX
〜/资源库/日志/ AndroidStudio / idea.log.1
Linux(可能的位置)
/家庭/ USER_NAME / AndroidStudio /系统/日志
Windows(可能的位置)
C:\ Users \用户名\ AndroidStudio \ SYSTEM \日志
并在文件内search
Pandroid.injected.signing.key.password
。 如果您之前使用与您目前正在查看的Android Studio版本相同的应用程序签名,则会看到密码。 -
您也可以通过项目的.gradle目录检索密码。 寻找以下path
project_directory / .gradle / 2.4 / taskArtifacts / taskArtifacts.bin。
注意:这似乎不适用于更新版本的Gradle(2.10及更高版本)。
-
如果以上解决scheme都不可行,那么您可以尝试这一个,但是对于这一个,您还必须拥有Android Studio IDE应用程序或者您的项目密钥库密码已经保存得更早的偏好设置(在签名时使用记住密码选项应用程序)。 您可以从以下path获取IDE首选项:
Mac OSX
〜/资源库/日志/ AndroidStudio / idea.log.1
Linux(可能的位置)
/家庭/ USER_NAME / AndroidStudio
Windows(可能的位置)
C:\用户\用户名\ .AndroidStudio
只要使用旧的Android Studio IDE,或者将旧IDE的首选项导入到新IDE中,并将密钥库文件放在与之前签名并保存密码相同的path中。
通过这种方式,一旦你打开项目,并尝试生成 – >生成签名的APK,并从旧的位置select密钥库文件。 它会自动检索密码并继续生成已发布的APK。
发布APK成功生成后,您可以按照前面提到的选项2来检查最近生成的发布APK的日志文件中的密码。
Zach Klippenstein在Google+上遇到了和你一样的问题。 你可以按照这里的线程。
如果你的两个密码都不一样,那么Android的蛮力是行不通的,所以最好的select可能就是尝试find名为。的文件
log.idea
在你的C:/用户/你的指定帐户,那么你可能会发现,在那里在Android文件夹中打开该文件lpg.idea记事本,然后search
别号
在记事本中使用find选项,你会发现密码,别名和别名passwors已经显示在那里
总而言之,这个问题有三个答案(解决办法不是被接受的答案):
-
如果您的日志完好无损,那么您可以按照上面Georgi Koemdzhiev的回答在Android Studio日志文件中find密码。
-
您可以根据ElDoRado1239和Gueorgui Obregon的回答,从.gradle目录中的“taskArtifacts.bin”文件中检索密码。 这似乎并不适用于更新版本的Gradle(2.10及以上版本)。
-
根据上面的Srinivas Keerthiprakasam的回答,使用AndroidKeystoreBrute来猜测或暴力破解你的密码。
所有这三个解决scheme都在这个链接深入。
在我的情况下,我得到的别名错误,即使我存储了正确的密码。 所以我认为这是错误的密码(使用离子包),所以我用这个命令获取别名
keytool -list -v -keystore
而且我能够再次使用密钥库!
我已经find了密码
C:\Users\{Username}\.AndroidStudio2.2\system\log\idea.txt
search
Pandroid.injected.signing.store.password
C:\用户\ ADMIN \ AndroidStudioProjects \ TrumpetTVChannel2.gradle \ 2.14.1 \ taskArtifacts \ taskArtifacts.bin
第一次尝试创build新的密钥库….然后用记事本打开taskArtifacts.bin并查找您刚才给出的密码….您将能够找出靠近刚给出的密码的单词,然后search这些单词你的密码在同一个文件….你将能够找出密码….. 🙂
不需要使用暴力破解一个简单的方法就是find你的纯文本密码。
去:
C:\Users\<your username>\AndroidStudioProjects\WhatsAppDP\.gradle\2.2.1\taskArtifacts
打开:
taskArtifacts.bin
当你打开taskArtifacts.bin可能看起来是encryption的,不用担心search“.keyPassword”几次。 然后你会以纯文本的方式find你的密码。 它可能类似于:
signingConfig.keyPassword¬í t <your password>Æù
希望这是有帮助的。
那么要查找丢失的密钥库密码,你可以试试这个,对于我来说,下面的解决scheme工作得很好。
在~/Library/Logs/AndroidStudio2.0
find想法日志文件。 您也可以通过打开Android Studio->帮助 – >显示login文件pipe理器find这些。
打开idea.log
文件。 注意:可能有多个文件,名为idea.log.1
, idea.log.2
等,通过它们中的每一个,直到find密码。
search“Pandroid.injected.signing.key.password”
,您可以看到密钥密码。
希望能帮助到你…
我遇到过同样的问题,我尝试了下面的步骤来解决这个问题:
-
创build签名apk与创build新的密钥库和新密码。
-
现在使用旧的密钥库(以前的apk构build上传时使用的密钥库)重新创buildapk,但现在使用新的密钥库密码。
-
现在一定会使用旧密钥库成功创buildapk。
- 希望这个解决scheme能帮助你
它可能有点晚,但它可以帮助确保你可以search密码,如果你还记得的东西,否则尝试search像
signingConfig.storePassword
另外如果你忘了关键别名,你可以在这里find,也search像signingConfig.keyAlias的东西
Project.gradle \ 3.3 \ taskArtifacts \ taskArtifacts.bin
希望它能帮助别人
没有什么会工作,所以请不要使用任何方法来恢复所有没有用的最好的select是,你必须重新提交与新密钥的应用程序,并取消发布旧应用程序