如何在Android中处理丢失的KeyStore密码?

问题描述 投票:69回答:31

我忘记了我的密钥库密码,我不知道该怎么办(我不能或不会给它任何借口)。我想更新我的应用程序,因为我刚刚修复了一个错误,但它不再可能。如果我使用相同的密钥库但创建新密钥会发生什么?我是否仍然可以更新应用程序,如果不可能,我该如何向用户提供有关更新版本的信息?

如果有人遇到这样的问题或遇到过麻烦,你可以给出什么建议来帮助纠正这种情况?幸运的是,它是一个免费的应用程序。

android keystore
31个回答
38
投票

this link

这很不幸,但是当您丢失密钥库或密钥库的密码时,您的应用程序将成为孤立的。您唯一能做的就是在新密钥下重新提交您的应用程序。

始终备份密钥库并将密码写入安全位置。


10
投票

它可能有点迟,但它会帮助某人肯定你可以搜索密码,如果你还记得一些东西,否则尝试搜索

signingConfig.storePassword

如果你忘记了密钥别名,你也可以在这里找到像signatureConfig.keyAlias这样的东西

Project.gradle \ 3.3 \ taskArtifacts \ taskArtifacts.bin

Android documentation

希望它会帮助某人


9
投票

对于任何可能遇到此问题的人,我想分享一个答案,可能是您或浏览本文的其他人(如我自己)。

我正在使用Eclipse并在其1.0版本中创建了我的密钥库。快进3个月,我想将其更新为1.1。当我在Eclipse中选择Export ...并选择了该密钥库时,我记不起的任何密码都没有。每次它说“密钥库被篡改或密码不正确”。它达到了一个点,我准备在它上面运行一个暴力程序,只要我能站立(一个星期左右)试图让它工作。

幸运的是,我在Eclipse之外签署了我的未签名.apk文件。瞧 - 它有效!我的密码一直都是正确的!我不确定为什么,但是通过导出菜单在Eclipse中签名即使我的密码正确也报告错误。

所以,如果你收到这个错误,这里是我的步骤(取自adding: META-INF/MANIFEST.MF ... signing: classes.dex ),以帮助你让你的apk准备好市场。

注意:要从Eclipse获取未签名的apk:右键单击项目> Android工具>导出未签名的应用程序

  1. 使用密钥库签署未签名的apk文件 一个。打开管理员cmd提示符并转到“c:\ Program Files \ Java \ jdk1.6.0_25 \ bin”或您拥有的任何java版本(您已复制未签名的apk文件和密钥库) 湾在cmd提示符下使用密钥库文件和同一目录中的unsigned apk,输入以下命令:jarsigner -keystore mykeystorename.keystore -verbose unsigned.apk myaliasnamefromkeystore C。它会说:“为密钥库输入Passphrase:”。输入它并按Return键。 d。 ===>成功如下: Verifying alignment of signedaligned.apk (4) 50 META-INF/MANIFEST.MF (OK - compressed) ... 1047129 classes.dex (OK - compressed) Verification succesful 即未签名的版本将被覆盖,因此您签名的apk文件现在与未签名的文件名相同
  2. 使用ZipAlign压缩已签名的apk文件以便在市场中分发 一个。打开admin cmd提示符并转到“c:\ AndroidSDK \ tools”或安装Android SDK的任何位置 湾输入以下命令:zipalign -v 4 signed.apk signedaligned.apk C。 ===>成功如下: AndroidKeystoreBrute d。签名和对齐的文件位于signedaligned.apk(您在上一个命令中指定的文件名)

========>准备提交给市场


9
投票

花了将近一天的时间研究在Android Studio中恢复丢失的密钥库密码的可能选项。我找到了以下4种可能的方法:

  1. 使用Pandroid.injected.signing.key.password检索您的密码。当您部分忘记密码意味着您仍然有一些密码提示时,此方法非常有用。
  2. 如果您之前已使用同一台计算机发布了应用程序(您为其找到密钥库密码),则还可以通过Android Studio日志文件检索它。请参阅以下目录: Mac OSX 〜/资源库/日志/ AndroidStudio / idea.log.1 Linux(可能的位置) /家庭/ USER_NAME / AndroidStudio /系统/日志 Windows(可能的位置) C:\ Users \用户名\ AndroidStudio \ SYSTEM \日志 并在文件中搜索enter image description here。如果您之前使用当前正在查找的相同Android Studio版本对应用程序进行了签名,则会看到密码。
  3. 您还可以通过项目的.gradle目录检索密码。寻找以下路径 project_directory / .gradle / 2.4 / taskArtifacts / taskArtifacts.bin。 注意:这似乎不适用于较新版本的Gradle(2.10及更高版本)。
  4. 如果以上解决方案都不起作用,那么你可以尝试这个,但是对于这个解决方案,你必须拥有Android Studio IDE应用程序或它的先前已保存项目密钥库密码的首选项(在签名时使用记住密码选项)应用程序)。您可以从以下路径获取IDE首选项: Mac OSX 〜/资源库/日志/ AndroidStudio / idea.log.1 Linux(可能的位置) /家庭/ USER_NAME / AndroidStudio Windows(可能的位置) C:\用户\用户名\ .AndroidStudio 如果您拥有旧IDE,或者将旧IDE的首选项导入到新IDE中,并将密钥库文件放在以前签名时的路径上并上次保存密码,请使用较旧的Android Studio IDE。 这样,一旦打开项目并尝试Build-> Generate Signed APK并从旧位置选择密钥库文件。它将自动检索密码并继续生成已签名的APK以供发布。 一旦发布APK成功生成,您可以按照前面提到的选项2从您的日志文件中检查您最近生成的发布APK的密码。

7
投票

首先下载AndroidKeystoreBrute_v1.05.jar然后按照给定的image.signingConfigs { config { keyAlias 'My App' keyPassword 'password' storeFile file('/storefile/location') storePassword 'anotherpassword' } }

准备一个wordlistfile like(wordlist.txt),在该文件中给出你的提示

密码提示:

用户

用户

密码

密码

pa55word

密码

@

*

#

$

&

1

2

123

789

你会得到你的密码。


5
投票

将此添加为另一种可能性。如果你碰巧在过去的某个时刻指定了签名配置,答案可能就在你的应用程序的build.gradle文件中:

link

你觉得幸运吗?!


4
投票

解决方案2019(Windows,Android Studio 3.3,gradle 4.10):

此解决方案仅在以前标记为“记住密码”复选框时才有效。

首先,对于此版本的gradle,taskArtifacts.bin不存在,idea.log显示密码的星号。这是过时的解决方案,对我没用。

我在哪里找到明文密码:C:\ Users \ {username} \ AndroidStudioProjects \ {project} \ app \ build \ intermediates \ signing_config \ release \ out \ signing-config.json

密钥:mStorePassword和mKeyPassword。

我真的希望它可以帮助别人。


3
投票

我一下子遇到了同样的问题。即使通过Google Play进行App签名,丢失密钥库或密码并不像以前那么大,但作为开发人员,我们宁愿更改密码并使用生成的密钥库文件,而无需等待几天谷歌来处理它。 (为了处理这个问题,谷歌使用这个link提出请求)为了自己处理这个问题,首先从这个javac ChangePassword.java下载两个.java文件。然后通过java ChangePassword <oldKeystoreFileName.keystore> <newKeystoreFileName.keystore> 命令编译ChangePassword.java。然后你可以跑

Georgi Koemdzhiev's

使用当前密钥库文件的路径/名称更改oldKeystoreFileName.keystore,使用新生成的新密钥库文件的路径/名称newKeystoreFileName.keystore。这会促使你

输入密钥库密码:

。只需输入您喜欢的任何内容:)无需输入丢失的原始密码。然后用*输入新密码

新的密钥库密码:

  • 瞧,就是这样。这不会更改密钥库的校验和,也不会在应用签名或上传到play.google事件时出现任何问题。

2
投票

如果你的密码都不同,那么Android暴力将不起作用,所以最好的选择可能就是尝试找到名为的文件

log.idea

在您的C:/ users /您的指定帐户中,您可能会发现在android文件夹中的那个文件lpg.idea在记事本中然后搜索

别号

在记事本中使用find选项,你会发现密码和别名以及别名密码已经显示在那里


2
投票

总结一下,这个问题有3个答案(并且接受的答案没有给出解决方案):

  1. 如果您的日志完好无损,那么您可以按照上面的ElDoRado1239's回答在Android Studio日志文件中找到密码。
  2. 您可以根据上面的Gueorgui Obregon'sSrinivas Keerthiprakasam's答案从.gradle目录中的'taskArtifacts.bin'文件中检索密码。这似乎不适用于较新版本的Gradle(2.10及更高版本)。
  3. 根据上面的link回答,使用AndroidKeystoreBrute猜测或强制密码。

这个C:\Users\{Username}\.AndroidStudio2.2\system\log\idea.txt 深入介绍了所有这三种解决方案。


2
投票

我找到了密码

Pandroid.injected.signing.store.password

搜索

taskhistory.bin

154
投票

刚刚遇到这个问题 - 幸运的是我能够在一些Gradle的临时文件中找到密码。万一有人落在这里,试着寻找

..Project\.gradle\2.4\taskArtifacts\taskArtifacts.bin

它是以明文形式存在的。一般情况下,如果您确实记住了密码的至少一部分,请尝试搜索包含此子字符串的文件,并希望您能找到一些东西。

想把它扔出去,也许最终会帮助别人。


2
投票

转到项目搜索密码的.gradle文件夹中的taskHistory.bin向下滚动,直至找到密码


2
投票

打开storePassword并搜索C:\Users\<your username>\AndroidStudioProjects\WhatsAppDP\.gradle\2.2.1\taskArtifacts


1
投票

在我的情况下,即使我存储了正确的密码,我的别名也是错误的。所以我认为这是错误的密码(使用离子包)所以我用这个命令来获取别名

keytool -list -v -keystore

我能够再次使用密钥库!


1
投票

C:\用户\ ADMIN \ AndroidStudioProjects \ TrumpetTVChannel2.gradle \ 2.14.1 \ taskArtifacts \ taskArtifacts.bin

第一次尝试创建新的密钥库....然后打开带有记事本的taskArtifacts.bin并查找刚才给出的密码....你将能够找出你刚刚给出的密码附近的单词然后搜索附近的这些单词你的密码在同一个文件....你将能够找出密码..... :)


0
投票

无需使用蛮力,简单的方法就是找到您的纯文本密码。

每个:

taskArtifacts.bin 

打开:

signingConfig.keyPassword¬í t <your password>Æù

当你打开taskArtifacts.bin可能看起来是加密的,不要担心搜索“.keyPassword”几次。然后,您将以纯文本格式找到密码。它可能类似于:

~/Library/Logs/AndroidStudio2.0

希望这有用。


0
投票

那么要查找丢失的密钥库密码,你可以尝试这个,对我来说,以下解决方案工作得很好。

idea.log中找到想法日志文件。您也可以通过在文件管理器中打开Android Studio->帮助 - >显示日志来找到它们。

打开idea.log.1文件。注意:可能有多个文件名为idea.log.2“Pandroid.injected.signing.key.password”等。查看每个文件,直到找到密码。

搜索keytool -list -keystore sample.jks,您可以看到密钥密码。

希望能帮助到你...


0
投票

我遇到过同样的问题,我尝试过以下步骤来解决问题: -

  1. 创建sign apk,创建新的密钥库和新密码。
  2. 现在使用您的旧密钥库(在上一个apk构建上载时使用的密钥库)再次创建签名apk,但现在使用新的密钥库密码。
  3. 现在肯定你会使用旧的密钥库成功创建签名apk。 希望这个解决方案能帮到你..

0
投票

在我的情况下,我已经将我的Android Studio从2.3升级到3.0.1,当我尝试为新的更新生成签名的apk时,我得到“Keystore被篡改,或密码不正确”错误。我有我以前的密钥库,我完全确定密码,使用它们我曾经多次更新过应用程序。经过大量搜索,没有一个解决方案适合我。这就是我做的。

  • 打开另一个项目。
  • 使用文件/新建/导入项目导入我的项目
  • 一旦建立了gradle,我就试图生成一个签名的apk。构建/生成签名APK
  • 单击“选择现有”并提供我的密钥库的路径。
  • 输入我的密钥库密码
  • 选择了关键别名
  • 键入我的密钥密码(在我的情况下,密钥存储密码和密钥密码是相同的)
  • 单击下一步并为新Apk提供路径并选中两个复选框。
  • 新APK已成功生成。

希望这有助于任何人。


0
投票

如果没有工作尝试这些线。移动到存储.jks的路径。在命令提示符下运行此命令。它会询问密码,忽略它并按回车键。

keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks


0
投票

解决方案2018:如果您缺少密码或jks文件,请使用新密钥库文件对应用程序进行签名。

1)使用命令行创建新的keystore.jks文件(不是android studio构建菜单)

"C:\Program Files\Android\Android Studio\jre\bin\keytool.exe" -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore "C:\keystore_new.jks"

Windows示例:keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks

2)从新密钥库生成.pem文件

"C:\Program Files\Android\Android Studio\jre\bin\keytool.exe"  -export -rfc -alias upload -file  "C:\upload_cert.pem" -keystore  "C:\keystore_new.jks"

Windows示例:https://support.google.com/googleplay/android-developer/contact/otherbugs

3)使用此支持表单,设置“密钥库问题”并使用附件添加.pem文件:Passwords

4)12-48h你启用了新的密钥库。使用使用新密钥库签名的新apk更新Playstore上的应用程序:D


41
投票

如果提供了错误的密码,即使只是一次,它会继续说下次尝试:

密钥库被篡改或密码不正确。

即使你提供了正确的。我试了几次,也许是某种保护。 关闭导出向导并使用正确的密码重新启动它,现在它可以工作:)


0
投票

如果您是Mac用户,请尝试检查Keychain Access应用程序。我的密码保存在名为org.jetbrains.android.exportSignedPackage.KeystoreStep$KeyStorePasswordRequestorandroid下。或者,您可以在密钥链访问中搜索Rebuild Project以在Keychain应用程序中查找密码。

不知道密码是如何结束的。但我不记得自己把它放在那里。所以必须是Android Studio。希望这是有帮助的。

注意:在尝试使用更新的密码进行签名之前,请不要忘记使用Clean Project或qazxswpoi。否则,虽然密码正确,但Android Studio可能无法构建apk。


35
投票

Brute是你最好的选择!

这是一个帮助我的脚本:

https://code.google.com/p/android-keystore-password-recover/wiki/HowTo

你可以选择给它一个密码可能包含的单词列表,以便快速恢复(对我而言,它在<1秒内工作)


19
投票

在MAC启动控制台实用程序上,向下滚动到〜/ Library / Logs - > AndroidStudio - > idea.log.1(或任何旧的日志编号)然后我搜索“keystore”,它应该出现在日志中的某个位置。

原始问题:link


15
投票

事实上,失去thekeystore password不是问题。 您可以使用下面的keytool命令创建新的密钥库并为其设置新密码。您不需要原始密钥库密码:

keytool -importkeystore -srckeystore path/to/keystore/with/forgotten/pw \ -destkeystore path/to/my/new.keystore

出现提示时,为new.keystore和源密钥库密码(丢失了密码)创建密码,只需按Enter键即可。 您将收到有关未检查完整性的警告,并且您将使用新设置的密码将new.keystore与原始内容相同。

这个工作的原因是keystore password只用于提供keystore的完整性,它不用它加密数据,与private key password相反,private key password实际上保持你的私钥加密。

请注意,您必须知道您的keystore password才能签署您的应用程序。好吧,如果它与被遗忘的@ElDoRado1239 says in his answer相同,那么你可以像@ Artur的答案那样求助于暴力。

这种方法总是对我有用。


13
投票

我觉得我需要回答这个问题,因为这不仅仅是在评论中。像..Project\.gradle\2.4\taskArtifacts\taskArtifacts.bin(不要忘记赞成他的回答;)

  • 在我的案例中寻找..Project\.gradle\2.2.1\taskArtifacts\taskArtifacts.bingradle 2.2.1,因为我使用storePassword
  • 然后寻找signingConfig.storePassword¬í t my.forgoten.password—signingConfig.keyAlias像@Moxet Khan在评论中说...我的情况是在线cd ~/Library/Logs/

希望能帮助别人!!!


12
投票

幸运的是,我在Android工作室日志中找到了丢失的密码以及密钥库路径和别名。

如果您正在运行基于Linux / Unix的计算机。

导航到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,

在那里,如果你还记得你用来构建最后一个版本APK的android工作室版本。导航到该目录

例如:cd AndroidStudio1.5 /

在那里你会找到日志文件。在任何日志文件(idea.log)中,您都可以找到密钥库凭据

Go to taskHistory

我希望这对Android Studio用户有帮助


12
投票

最后我花了两天后找到了解决方案......

跟着这些步骤:

  1. 去项目
  2. 在.gradle中,在我的情况下找到你的gradle版本文件夹它是4.1(参考图片)
  3. 展开4.1文件夹,然后在taskHistory文件夹中找到taskHistory.bin文件。
  4. 在android studio本身打开taskHistory.bin文件。
  5. 搜索“.storePassword”..这就是你获得了密钥库密码。

这真的对我有用。

试试这个和快乐的编码!

© www.soinside.com 2019 - 2024. All rights reserved.