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

iro*_*xxx 76 android keystore

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

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

ElD*_*239 172

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

..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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 给这个人一枚奖牌...让其他人更快地找到密码:搜索".keyPassword"几次,你就会看到你的密码.非常感谢@ EldoRado1239 :) (22认同)
  • 为未来的读者更新。显然这不再起作用了,谷歌对密码进行了加密/密码现在存储为哈希值。 (11认同)
  • 试试.storePassword (9认同)
  • 在 /.gradle/5.6.4/executionHistory/executionHistory.bin 内,我正在获取signingConfig.signingConfigData.storePasswordHash。哈希值不是明文密码。我可以做些什么来获取密码吗? (8认同)
  • 如果你找不到上面的路径,试试这个..Project\.gradle\3.5\taskHistory\taskHistory.bin (4认同)
  • 如果您使用的是OSX/Linux,则可以运行此命令以轻松获取存储的密码条目:`strings taskArtifacts.bin | grep storePassword -A1`顺便说一句,感谢ElDoRado1239 - 你只是为我节省了大量时间. (3认同)
  • 帮助我可以在gradle 5.1.1中找到任何提到的目录 (2认同)

小智 41

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

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

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

  • 你的意思是"关闭导出向导" (7认同)
  • 什么是导出向导? (3认同)

Zeb*_*baz 40

看到这个链接

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

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

  • 您可以创建一个新的 jks 文件并要求 google 让您用它签署您以前的应用程序 (4认同)

Art*_*tur 36

Brute是你最好的选择!

这是一个帮助我的脚本:

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

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


Geo*_*iev 19

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

原始问题:链接


kir*_*wka 17

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

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

当提示,为您创建的密码new.keystore源库密码(你丢失)刚打回车.
您将收到有关未检查完整性的警告,并且您将使用新设置的密码将new.keystore与原始内容相同.

其工作原理keystore password仅用于提供完整性keystore,它不会使用它加密数据,相反private key password,它实际上保护您的私钥加密.

请注意,您必须知道要private key password对自己的应用进行签名.好吧,如果它与被遗忘的相同,keystore password那么你可以像@ Artur的答案那样求助于暴力.

这种方法总是对我有用.


Arj*_*n G 17

转到taskHistory

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

跟着这些步骤:

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

这真的对我有用.

试试这个和快乐的编码!

  • 使用Android 3.5.3,不幸的是.bin文件没有任何相关信息。 (2认同)

Gue*_*gon 13

我觉得我需要回答这个问题,因为这不仅仅是在评论中.就像@ 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

希望能帮助别人!!!


小智 12

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

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

导航到Library Logs目录

cd ~/Library/Logs/
Run Code Online (Sandbox Code Playgroud)

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

例如: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,
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为这在AndroidStudio3.0上不起作用,所有信息显示为*******,密钥存储密码和密钥密码的长度相同. (8认同)

Gha*_*yma 11

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

signingConfig.storePassword

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

Project.gradle\3.3\taskArtifacts\taskArtifacts.bin

希望它会帮助某人


小智 10

解决方案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。

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


ckb*_*dge 9

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

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

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

所以,如果你收到这个错误,这里是我的步骤(取自Android文档),以帮助你准备好市场的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.===>成功如下:

    adding: META-INF/MANIFEST.MF
    ...
    signing: classes.dex
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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

    湾 输入以下命令: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
    
    Run Code Online (Sandbox Code Playgroud)

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

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


小智 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应用程序或它的先前已保存项目密钥库密码的首选项(在签名时使用记住密码选项)应用程序).您可以从以下路径获取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的密码.


小智 8

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

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}
Run Code Online (Sandbox Code Playgroud)

完全希望它能帮助你。

  • 这实际上是您尝试的最后一个密码,可能是用户尝试了不同的密码。然后他们会得到错误的密码 (2认同)

jah*_*oma 8

我很惊讶没有人提到这一点,但您可以转到 Google Play 开发者支持,他们将与您一起创建一个新的上传密钥:

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

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

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


Sri*_*sam 7

首先下载AndroidKeystoreBrute_v1.05.jar,然后按照给定的图像.在此输入图像描述

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

密码提示:

用户

用户

密码

密码

pa55word

密码

@

*

#

$

&

1

2

123

789

你会得到你的密码.


Sco*_*tyB 5

将此添加为另一种可能性。答案可能就在您的鼻子下-如果您曾经在某个时候指定过签名配置,则在应用程序的build.gradle文件中:

signingConfigs {
    config {
        keyAlias 'My App'
        keyPassword 'password'
        storeFile file('/storefile/location')
        storePassword 'anotherpassword'
    }
}
Run Code Online (Sandbox Code Playgroud)

你感到幸运吗?