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

时间:2011-05-22 18:12:38

标签: android keystore

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

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

43 个答案:

答案 0 :(得分:150)

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

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

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

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

答案 1 :(得分:41)

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

  

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

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

答案 2 :(得分:36)

请参阅this link

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

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

答案 3 :(得分:34)

Brute是你最好的选择!

这是一个帮助我的脚本:

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

您可以选择为其提供密码可能所包含的单词列表,以便快速恢复(对我来说,它工作时间<1秒)

答案 4 :(得分:19)

在MAC启动控制台实用程序上,向下滚动到〜/ Library / Logs - &gt; AndroidStudio - &gt; idea.log.1(或任何旧的日志编号) 然后我搜索了“密钥库”,它应该出现在日志的某个地方。

原始问题:link

答案 5 :(得分:14)

事实上,失去keystore 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相同,那么你可以像@ Artur的回答那样使用暴力。

这种方法对我来说一直很有用。

答案 6 :(得分:12)

我觉得我需要回答这个问题,因为这不仅仅是在评论中。 像@ElDoRado1239 says in his answer一样(别忘了回答他的回答;)

  • 我的案例中..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

希望帮助别人!!!

答案 7 :(得分:12)

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

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

导航到Library Logs目录

cd ~/Library/Logs/

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

ex:cd AndroidStudio1.5 /

在那里你会找到日志文件。在任何日志文件中(idea.log) 你会找到你的密钥库凭证

示例

-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用户有帮助

答案 8 :(得分:10)

Go to taskHistory

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

请按照以下步骤操作:

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

    试试这个并快乐编码!!!

答案 9 :(得分:10)

可能有点晚了,但肯定会对某人有所帮助 如果您记得某些内容,可以搜索密码,否则请尝试搜索

<强> signingConfig.storePassword

如果你忘记了密钥别名,你也可以在这里找到 搜索 signingConfig.keyAlias

之类的内容
  

Project.gradle \ 3.3 \ taskArtifacts \ taskArtifacts.bin

looks like

希望它会帮助某人

答案 10 :(得分:9)

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

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

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

因此,如果您收到此错误,请执行以下步骤(取自Android documentation),以帮助您准备好适用于市场的apk。

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

  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

    ℃。它会说:“为密钥库输入Passphrase:”。输入它并按Return键。

    d。 ===&GT;成功看起来像这样:

    adding: META-INF/MANIFEST.MF
    ...
    signing: classes.dex
    

    即未签名的版本将被覆盖,因此您签名的apk文件现在与未签名的文件名相同

  2. 使用ZipAlign压缩已签名的apk文件以在市场中分发

    一个。打开admin cmd提示符并转到“c:\ AndroidSDK \ tools”或安装Android SDK的任何位置

    湾输入以下命令:zipalign -v 4 signed.apk signedaligned.apk

    ℃。 ===&GT;成功看起来像这样:

    Verifying alignment of signedaligned.apk (4)
    50 META-INF/MANIFEST.MF (OK - compressed)
    ...
    1047129 classes.dex (OK - compressed)
    Verification succesful
    

    d。签名和对齐的文件位于signedaligned.apk(您在上一个命令中指定的文件名)

  3. ======&GT;准备提交给市场

答案 11 :(得分:9)

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

  1. 使用AndroidKeystoreBrute检索您的密码。当您部分忘记密码意味着您仍然有一些密码提示时,此方法非常有用。

  2. 如果您之前使用同一台计算机发布了应用程序(您为其找到了密钥库密码),也可以通过Android Studio日志文件检索它。请参阅以下目录:

    Mac OSX

      

    〜/库/日志/ AndroidStudio / idea.log.1

    Linux(可能的位置)

      

    /家庭/ USER_NAME / AndroidStudio /系统/登录

    Windows(可能的位置)

      

    C:\ Users \用户名\ AndroidStudio \ SYSTEM \日志

    并在文件中搜索Pandroid.injected.signing.key.password。如果您之前使用当前正在查找的相同Android Studio版本对应用程序进行了签名,则会看到密码。

  3. 您还可以通过项目的.gradle目录检索密码。寻找以下路径

      

    project_directory / .gradle / 2.4 / taskArtifacts / taskArtifacts.bin。

         

    注意:这似乎不适用于较新版本的Gradle(2.10及更高版本)。

  4. 如果以上解决方案都不起作用,那么你可以试试这个,但是对于这个解决方案你也必须拥有Android Studio IDE应用程序或者之前已保存项目密钥库密码的It首选项(使用Remember password选项)在签署应用程序时)。您可以从以下路径获取IDE首选项:

    Mac OSX

      

    〜/库/日志/ AndroidStudio / idea.log.1

    Linux(可能的位置)

      

    /家庭/ USER_NAME / AndroidStudio

    Windows(可能的位置)

      

    C:\用户\用户名\ .AndroidStudio

    如果您拥有旧IDE并将旧的IDE的首选项导入到新IDE中,并将密钥库文件放在以前签名时的路径并上次保存密码,请使用较旧的Android Studio IDE。

    这样,一旦打开项目并尝试Build-&gt; Generate Signed APK并从旧位置选择密钥库文件。它会自动检索密码并继续生成已签名的APK以供发布。

    一旦发布APK成功生成,您可以按照前面提到的选项2从您的日志文件中检查您最近生成的版本APK的密码。

答案 12 :(得分:7)

获取密钥库密码的最简单方法

project_folder \ app \ build \ intermediates \ signing_config \ release \ out \ signing-config.json

签出此文件 在signing-config.json

中搜索 StorePassword
{"mName":"externalOverride","mStoreFile":"C:\\Users\\dAvInDeR\\Desktop\\KEYSTORE\\keystore.jks","mStorePassword":"1234@#abcd","mKeyAlias":"uploadkey","mKeyPassword":"1234@#abcd","mStoreType":"jks","mV1SigningEnabled":false,"mV2SigningEnabled":false}

充分希望它将对您有帮助。

答案 13 :(得分:7)

首先下载AndroidKeystoreBrute_v1.05.jar然后按照给定的图片。enter image description here

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

密码提示:

用户

用户

密码

密码

pa55word

密码

@

*

$

&安培;

1

2

123

789

你会得到你的密码。

答案 14 :(得分:4)

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

signingConfigs {
    config {
        keyAlias 'My App'
        keyPassword 'password'
        storeFile file('/storefile/location')
        storePassword 'anotherpassword'
    }
}

你觉得幸运吗?!

答案 15 :(得分:3)

在Ionic中,我可以在这里找到它:/app/platforms/android/app/build/intermediates/signing_config/release/out/signing-config.json

也许这会帮助某人。欢呼。

答案 16 :(得分:3)

如果,您可以从PC上构建应用,但您不记得密码,可以通过以下操作来检索密码:

方法1:

在您的build.gradle中,添加println MYAPP_RELEASE_KEY_PASSWORD如下:

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
        }
    }
}

然后,运行cd android && ./gradlew assembleRelease

方法2:

运行keytool -list -v -keystore your <.keystore file path>,例如keytool -list -v -keystore ./app/my-app-key.keystore。

它将要求您输入密钥库密码:只需在此处按Enter键。您将可以找到映射到别名的名称:

然后,在终端中运行grep -rn "<your alias name>" .,您将能够看到如下所示的signing.json文件:

./app/build/intermediates/signing_config/release/out/signing-config.json

该文件将使用json格式的密码,并带有键“ mKeyPassword”:“ <您的密码>”

答案 17 :(得分:3)

我很惊讶没有人提及此事,但是您可以寻求Google Play开发者支持,他们将与您一起创建新的上传密钥:

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

我填写了一个问题,他们在1天内与我联系。

更新:按照他们的电子邮件说明,我能够创建一个新的上传密钥,几天后启用了它!问题解决了。

答案 18 :(得分:3)

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

仅当先前已选中“记住密码”复选框时,此解决方案才有效。

首先,此版本的gradle不存在taskArtifacts.bin,idea.log显示密码的星号。过去的解决方案对我不起作用。

在其中找到明文密码的位置:C:\ Users \ {用户名} \ AndroidStudioProjects \ {project} \ app \ build \ intermediates \ signing_config \ release \ out \ signing-config.json

键:mStorePassword和mKeyPassword。

我真的希望它能对其他人有所帮助。

答案 19 :(得分:2)

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

  1. 如果您的日志完好无损,那么您可以按照上面Georgi Koemdzhiev's的答案在Android Studio日志文件中找到密码。

  2. 您可以从&#39; taskArtifacts.bin&#39;中检索密码。根据上面ElDoRado1239'sGueorgui Obregon's的答案,您的.gradle目录中的文件。这似乎不适用于较新版本的Gradle(2.10及更高版本)。

  3. 根据上面Srinivas Keerthiprakasam's的答案,使用AndroidKeystoreBrute来猜测或强制使用您的密码。

  4. link详细介绍了所有这三种解决方案。

答案 20 :(得分:2)

我在

中找到了密码
C:\Users\{Username}\.AndroidStudio2.2\system\log\idea.txt

搜索

Pandroid.injected.signing.store.password

答案 21 :(得分:2)

仅为简化操作,此解决方案将于2020年适用于gradle ver:5.4.1

打开文件:project \ .gradle \ 5.4.1 \ executionHistory.bin

密钥存储区密码:

搜索“ storePassword ”文本

密钥密码:

搜索“ keyAlias ”文本

搜索后,请检查同一行或下一行中的密码。

答案 22 :(得分:2)

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

的文件

log.idea

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

别名

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

答案 23 :(得分:2)

我一次遇到了同样的问题。 即使使用Google Play进行应用签名,丢失密钥库或其密码并不像之前那样大不了,但作为开发人员,我们还是宁愿更改其密码并使用生成的密钥库文件,而不必等待几天时间来谷歌处理它。 (要使用google处理此问题,请使用此link进行请求) 为了自己解决这个问题, 首先从此link下载两个.java文件。 然后通过javac ChangePassword.java命令编译ChangePassword.java。 然后,您可以运行

java ChangePassword <oldKeystoreFileName.keystore> <newKeystoreFileName.keystore>

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

  

输入密钥库密码:

。只需输入您喜欢的内容即可:)不必是丢失的原始密码。然后使用*

输入新密码。
  

新的密钥库密码:

  • Voila,就是这样。这不会更改密钥库的校验和,也不会在应用程序签名或上传到play.google事件中造成任何问题。

答案 24 :(得分:1)

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

keytool -list -v -keystore

我能够再次使用密钥库了!

答案 25 :(得分:1)

打开taskHistory.bin并搜索storePassword

答案 26 :(得分:1)

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

答案 27 :(得分:1)

我知道这个问题已经 AGES 了,但是我看到了许多答案,他们基本上都说蛮力是行之有效的方法,但这根本不是真的,因为开发人员通常拥有很长的密码,它不能轻易被强行使用,而且还需要几天时间,而且您必须使计算机运行24/7,所以我的解决方案很简单-与支持人员联系,他们甚至会为您生成一个新密钥,您将获得最快的解决方案。

答案 28 :(得分:1)

C:\用户\管理员\ AndroidStudioProjects \ TrumpetTVChannel2.gradle \ 2.14.1 \ taskArtifacts \ taskArtifacts.bin

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

答案 29 :(得分:1)

今天 2/2/2021,我可以在文件名“executionHistory.bin”中找到我的密码。 让你用notepad++打开,搜索keykeyPassword。见下图。

https://i.stack.imgur.com/NNHFA.png

答案 30 :(得分:0)

Android Keystore Password Recovery工具帮助了我 100%,但是花费了很多时间。 (对于我来说,我需要整夜恢复密码。

答案 31 :(得分:0)


我面对同样的问题,还尝试了各种方法进行恢复。我是“密钥库密码” “爱丽丝名称” 错误,或者可能是“。JKS” 名称。所以我不确定,尽管我尝试了上述所有方法但无法回溯,这是怎么回事。


  • Link from Linkedin是我发现有帮助的一种技术方法。

  • 或者您可以向 Google Playstore支持团队寻求帮助,以防万一 没有一种方法有效,即:Google Playstore Help登录与您注册的电子邮件地址,您从其中在Google Playstore中提交了android应用,并提及正确的开发者ID,名称,项目包名称,并通过链接提交申请表格。


希望这些链接中的任何一个对您都有帮助。


答案 32 :(得分:0)

您可以就此问题联系 Google Play Console 支持,他们将能够为您将密钥库重置为新的密钥库。然后,您将能够发布未来的更新而无需更改包名称,因此您将能够继续更新同一个应用。

在播放控制台中单击顶部的帮助按钮 > 向下滚动以查看更多帮助并单击“联系我们”> 输入您需要有关密钥库重置的帮助 > 单击“下一步”> 单击“上传密钥重置请求” " > 点击“联系 Google Play 开发者支持”> 然后选择一种联系方式联系他们为您重置。

答案 33 :(得分:0)

有一种方法可以重置密码。

转到此链接,描述您的问题(忘记 KeyStore 密码)并生成令牌。 https://support.google.com/googleplay/android-developer/contact/otherbugs

如果幸运的话,您将在 1 小时内获得重播。 (一般最多需要 2 天)。

您需要生成一个新密钥和upload_certificate.pem 并将其发送给谷歌进行重置。您将在邮件中收到说明。

要生成upload_certificate.pem,请转到android studio 终端并输入:

keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks

答案 34 :(得分:0)

在终端中,您的PC可能与之不同:

C:\Program Files\Java\jre1.8.0_241\bin

然后:

对于Windows

keytool -list -v -keystore C:\Users\YOURUSERPROFILENAME\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

对于Mac

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

答案 35 :(得分:0)

如果您是Mac用户,请尝试检出“钥匙串访问”应用程序。我的密码保存在名为Passwords的{​​{1}}下。或者,您可以在“钥匙串访问”中搜索org.jetbrains.android.exportSignedPackage.KeystoreStep$KeyStorePasswordRequestor,以在“钥匙串”应用中找到密码。

虽然不确定密码如何在那里结束。但是我不记得自己把它放在那儿了。因此必须是Android Studio。希望这会有所帮助。

注意:在尝试使用更新的密码签名之前,请不要忘记androidRebuild Project 。否则,尽管密码正确,但Android Studio可能无法构建apk。

答案 36 :(得分:0)

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

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

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

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

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

keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks

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

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

4) 12-48h您启用了新的密钥库。使用签名有新密钥库:D

的新APK更新Playstore上的应用

答案 37 :(得分:0)

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

keytool -list -keystore sample.jks

答案 38 :(得分:0)

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

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

希望这有助于任何人。

答案 39 :(得分:0)

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

  1. 使用创建新密钥库和新密码创建sign apk。

  2. 现在使用您的旧密钥库(在上一次apk构建上传时使用的密钥库)再次创建签名apk,但现在使用新的密钥库密码。

  3. 现在肯定你会使用旧密钥库成功创建签名apk。

    • 希望这个解决方案能帮到你..

答案 40 :(得分:0)

要查找丢失的密钥库密码,您可以试试这个,对我来说,以下解决方案效果很好。

~/Library/Logs/AndroidStudio2.0中找到想法日志文件。你也可以通过打开Android Studio-&gt;找到它们。帮助 - &gt;显示登录文件管理器。

打开idea.log文件。注意:可能有多个文件名为idea.log.1idea.log.2等。查看每个文件,直至找到密码。

搜索“Pandroid.injected.signing.key.password”,您可以看到密钥密码。

希望它有所帮助...

答案 41 :(得分:0)

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

:转到:

C:\Users\<your username>\AndroidStudioProjects\WhatsAppDP\.gradle\2.2.1\taskArtifacts

打开:

taskArtifacts.bin 

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

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

希望这有用。

答案 42 :(得分:-3)

没有什么会对你有用所以请不要使用任何方法来恢复所有没有用的最佳选择是你必须用新密钥重新提交应用程序并取消发布旧应用程序