13

Android keystore踩坑记录

 3 years ago
source link: https://felixxiong.github.io/2021/01/16/Android-keystore%E8%B8%A9%E5%9D%91%E8%AE%B0%E5%BD%95/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Android keystore踩坑记录

发表于 2021-01-16

| 分类于 编程开发

Android开发

踩坑记录

| 0

| 阅读次数: 10

| 10

字数统计: 911

|

阅读时长 ≈ 3

最近又在折腾我之前的Android项目了,再次重写,使用不同的控件,由浅入深,尝试转向开发岗[1]

关于在百度地图上踩的keystore的坑以及解决方案,都在这里一并记录。希望可以节省你的时间。

关于我练手项目的尝试经历,可以查看相关标签中关于地图与音乐的文章:Android开发

场景:2020年7月,我创建过一个Keystore,今日通过如下命令[2]创建keystore,发生错误。

以下的解决方案,其中部分整合了参考链接中的内容与相应软件的命令,我在此对原作者表示感谢。

密钥库不存在

Android的终端输入:keytool -list -v -keystore debug.keystore

提示:密钥库不存在,但在Mac路径〜/.android/debug.keystore中,有debug.keystore文件。

在终端使用如下命令重建keystore:

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000

重建文件,则百度地图后台需要再次提交。

keystore password was incorrect

Execution failed for task ‘:app:packageDebug’.

A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable
com.android.ide.common.signing.KeytoolException: Failed to read key AndroidDebugKey from store “/Users/felixxiong/.android/debug.keyst··ore”: keystore password was incorrect

Cause: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.

原因:keystore密码错误

场景:在Mac路径〜/.android/debug.keystore中,有debug.keystore文件,在Android运行时签名报错。

使用以下三个命令可修改keystore参数(其中my.keystore为复制后的新keystore):

修改密码:keytool -storepasswd -keystore android.keystore

修改别名alias:keytool -changealias -keystore android.keystore -alias my_name -destalias androiddebugkey

修改alias密码:keytool -keypasswd -keystore my.keystore -alias androiddebugkey

keystore的种类

目前发现,keystore有PKCS12与SHA256withRSA两种。

如果 -storetype 为 PKCS12

尝试修改密码,继续报错:

keytool 错误: java.lang.UnsupportedOperationException: 如果 -storetype 为 PKCS12, 则不支持 -keypasswd 命令

如果 -storetype 为 SHA256withRSA

此处我通过Android Studio - Build - Generate Singed -Bundle / APK创建的keystore。

Warning:JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore debug.keystore -destkeystore debug.keystore -deststoretype pkcs12” 迁移到行业标准格式 PKCS12。

便于复制的命令:

keytool -importkeystore -srckeystore debug.keystore -destkeystore debug.keystore -deststoretype pkcs12

此处经测试,当keystore的type为SHA256withRSA时,可以使用上述三个命令。

找回key相关

如果你使用AS生成过,则可通过log方式查看。

Windows:C:\Users\UserName(当前系统的用户名),AndroidStudioX.X > system > log-idea.log-injected.signing.store

Mac:Terminal- ~/Library/Logs -> AndroidStudioBeta ->idea.log.1 (or any old log number)-injected.signing.store

使用软件破解密码
  1. 下载Android-keystore-password-recover,获得jar包,放置在桌面。

  2. 创建你所熟悉的密码词表,以txt格式结尾,放置在桌面。

  3. 使用字典破解或智能破解方式:

    # 字典破解
    java -jar Android_Keystore_Password_Recover_1.07.jar -m 2 -k "C:\\mykeystore.keystore" -d "passlib.txt"

    #智能破解
    java -jar Android_Keystore_Password_Recover_1.07.jar -m 3 -k "C:\\mykeystore.keystore" -d "passlib.txt"

    # Android_Keystore_Password_Recover_1.07.jar 为软件名称
    # "C:\\mykeystore.keystore"为keystore路径
    # "passlib.txt"为你所熟悉的密码词表的txt文档的名称

Exception in thread “main” java.io.FileNotFoundException: Users/felixxiong/Desktop/mykeystore.keystore (No such file or directory)

可能是Mac的文件编写路径错误。

文件在桌面的终端路径写法为:Users/youraccountname/Desktop/xxx.keystore

java.io.IOException: not a JavaKeyStore

后续更新。

如果你有解决方案,欢迎在评论里留言~


参考链接:

关于Android Studio打包出现错误

[TUT] Change alias passwords of your Android Keystore

Android 找回签名证书Key Alias 和 Key Password


  1. 这个话我想了很多次了,但这一次我非技术(Android)不做。 ↩︎

  2. 可通过终端或Android Studio终端输入命令 ↩︎

FelixXiong wechat
产品北里,讲述产品和人性、涉及设计、技术和运营的公众号。
你们的赞赏是我更新的动力~

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK