Android 密钥库停止工作

2024-05-05

就在最近,我在密钥存储方面遇到了问题。我知道已经有很多关于这个问题的问题了。我已经阅读了所有这些内容并疯狂地用谷歌搜索。

Error:

keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
java.io.IOException: Keystore was tampered with, or password was incorrect
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:772)
    at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
    at java.security.KeyStore.load(KeyStore.java:1214)
    at sun.security.tools.KeyTool.doCommands(KeyTool.java:885)
    at sun.security.tools.KeyTool.run(KeyTool.java:340)
    at sun.security.tools.KeyTool.main(KeyTool.java:333)
Caused by: java.security.UnrecoverableKeyException: Password verification failed
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:770)
    ... 5 more

我正在使用的软件:

Java

java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

Eclipse

Version: 3.8.0
Build id: I20120502-2000

最新的 ADT 插件

最新安卓SDK

这是我所知道的:

  • 我没有丢失密码,也从未更改过。
  • 我无法找回密码(我知道通行证)。
  • 在不发布全新应用程序的情况下,我无法使用不同的密钥对现有应用程序进行签名(因此我无法发布任何更新)。

这是我所做的:

  • 我已经多次卸载并重新安装 Eclipse。
  • 我已经卸载并重新安装了android ADT插件。
  • 我已经多次删除并重新下载最新的 Android SDK。
  • 我已经卸载并重新安装了JDK7。
  • 我尝试过使用我的密钥库的备份。
  • 我已经使用“md5sum KEYSTORE”检查了 MD5 校验和,并与备份进行了比较(相同的 MD5 输出 - 未篡改)。
  • 我尝试过暴力破解密钥库(我已检索到我知道的密码)。
  • 我创建了一个测试密钥(使用当前设置)并测试了密码,它似乎工作正常(所以有些东西发生了变化)。
  • 我尝试手动导出 android .apk,然后尝试对其进行签名(在 Eclipse 之外)。

以下是导出签名应用程序的方法:

  • 通过日食:使用“文件”>“导出”>“导出 Android 应用程序”导出。
  • JDK7之前:jarsigner -verbose -keystore 密钥库文件别名。
  • 使用 JDK7:jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore 密钥库文件别名。

还有什么需要弄清楚或尝试的?

  • 一些参考资料/URL 说要删除“trusted.certs”文件?
  • 尝试删除“debug.keystore”?
  • 更新 Eclipse 或任何 Android 开发工具会影响我的密钥库吗?
  • 将 Java 从 jdk6 更新到 jdk7 会产生任何问题吗?
  • 这是否会扰乱或改变 jarsigner 的工作方式?

用户建议:

  • 尝试使用 JDK6,但我最近能够导出应用程序。
  • 在我的 local.properties 中检查了 key.store.password 或 key.alias.password
  • 在 Eclipse 中取消自动构建并清理项目
  • 尝试删除工作区中的 .metadata 文件夹并清除所有临时文件夹。

Summary

  • 密钥库没有改变,
  • 我有密钥库的密码,
  • I have successfully exported an application recently using:
    • Eclipse 3.8(和 Eclipse 4.0+),
    • 最新的Java 7,
    • 最新的 ADT 插件。
  • 我上次成功导出和构建是在几周前,使用 Eclipse 3.8、最新的 Android 工具和 Java 7 使用相同的密码。

更新(2014 年 6 月 29 日)

  • 我用过了:keytool -list -keystore KEYSTORE成功证明并展示我的 4 个钥匙中的 3 个有效。
  • 我暴力破解了最后一个密钥并从密钥库获取了密码(我已经知道的通行证),但是当我输入签名时密码不起作用。我用过了:java-jarAndroidKeystoreBrute_v1.02.jar-m 3 -k 密钥库 -d 单词列表.
  • 奇怪的是,有时当我很快在 eclipse 中输入密码时,我的别名就会出现,并且我可以成功导出我的应用程序。 (我知道这很疯狂)。
  • 更新了 Java 版本。

如果我很快输入密码,有时它会起作用。

似乎第一次打开 Eclipse 并输入密码就可以使用密钥库。

显然,如果一切都失败了,我将不得不创建一个新的密钥存储。我真的很想解决这个问题,我只是不知道除了使用新密钥重新发布之外现在还能做什么。

如果密钥无法正常恢复,我可能会在 Github 上开源。


解决方案(2014 年 6 月 29 日):

特别感谢用户 Erhannis!

这是我所做的:

该命令每次都会出错:

keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -v

既然您告诉我我们可以从 Java Keystore(.jks) 中提取私钥,我就深入研究并最终使用了该命令的变体。我按照你发布的链接进行操作here https://security.stackexchange.com/a/3795 and here http://www.tbs-certificates.co.uk/FAQ/en/626.html:

keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -deststoretype pkcs12

提取私钥并存储为 PKCS12 后,我认为提取了我的私钥并将其放回到全新的 Java 密钥库中:

keytool -importkeystore -srckeystore new.keystore -srcstoretype pkcs12 -destkeystore final.keystore -deststoretype jks

参考:

http://developer.android.com/tools/publishing/app-signing.html#signapp http://developer.android.com/tools/publishing/app-signing.html#signapp

http://code.google.com/p/android-keystore-password-recover/ http://code.google.com/p/android-keystore-password-recover/

我读过的 StackOverflow URL 列表:

如何处理 Android 中丢失的 KeyStore 密码? https://stackoverflow.com/questions/6089813/please-advice-needed-lost-keystore-password

无效密钥库问题? https://stackoverflow.com/questions/6035970/invalid-keystore-problem

Android:我丢失了 Android 密钥存储,我该怎么办? https://stackoverflow.com/questions/4459719/android-i-lost-my-android-key-store-what-should-i-do

我丢失了 .keystore 文件? https://stackoverflow.com/questions/4322367/i-lost-my-keystore-file

忘记了密钥库密码,正在考虑暴力检测。它会损坏密钥库吗? https://stackoverflow.com/questions/6149530/forgot-keystore-password-thinking-of-brute-force-detection-will-it-corrupt-the

我丢失了 android 密钥库文件的密码 https://stackoverflow.com/questions/8877354/i-have-lost-the-password-for-android-keystore-file

在 Eclipse 中运行我的签名发布密钥库时出现问题 https://stackoverflow.com/questions/4280507/problem-running-my-signed-release-keystore-in-eclipse

Android - 忘记密钥库密码。我可以解密密钥库文件吗? https://stackoverflow.com/questions/8894987/android-forgot-keystore-password-can-i-decrypt-keystore-file

Android发布密钥库问题:“密钥库被篡改,或密码不正确” https://stackoverflow.com/questions/9309975/android-release-keystore-issue-keystore-was-tampered-with-or-password-was-inc


我可能也遇到过同样的问题。我从来没有弄清楚为什么它失败了(尽管我想知道是否是因为密钥库密码短于 6 位数字),但我能够将我的密钥复制到一个新的密钥库中,然后我将其重命名以替换旧的密钥库,之后它神秘地起作用了(使用新密码)。顺便说一下,需要密钥密码。下班https://security.stackexchange.com/a/3795 https://security.stackexchange.com/a/3795,我做了以下事情:

  1. keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -v
  2. 输入两次新的密钥库密码
  3. Hit Enter when it asked me for the source keystore password (left it blank)
  4. 输入密钥密码

在仔细检查新的是否有效后,我将其复制到旧的上。希望对你有帮助;祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 密钥库停止工作 的相关文章

  • 无法理解 Java 地图条目集

    我正在看一个 java 刽子手游戏 https github com leleah EvilHangman blob master EvilHangman java https github com leleah EvilHangman b
  • 迁移到 java 17 后有关“每个进程的内存映射”和 JVM 崩溃的 GC 警告

    我们正在将 java 8 应用程序迁移到 java 17 并将 GC 从G1GC to ZGC 我们的应用程序作为容器运行 这两个基础映像之间的唯一区别是 java 的版本 例如对于 java 17 版本 FROM ubuntu 20 04
  • Clip 在 Java 中播放 WAV 文件时出现严重延迟

    我编写了一段代码来读取 WAV 文件 大小约为 80 mb 并播放该文件 问题是声音播放效果很差 极度滞后 你能告诉我有什么问题吗 这是我的代码 我称之为doPlayJframe 构造函数内的函数 private void doPlay f
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • Android Studio:无法启动守护进程

    当我尝试在 Android Studio 中导入 gradle 项目时 遇到以下错误 Unable to start the daemon process This problem might be caused by incorrect
  • 调节麦克风录音音量

    我们正在尝试调整录音时的音量级别 麦克风似乎非常敏感 会接收到很多静电 我们查看了 setVolumeControlStream 但找不到传入其中来控制麦克风的流 将您的音频源设置为 MIC using MediaRecorder Audi
  • 尝试使用 Ruby Java Bridge (RJB) gem 时出现错误“无法创建 Java VM”

    我正在尝试实现 Ruby Java Bridge RJB gem 来与 JVM 通信 以便我可以运行 Open NLP gem 我在 Windows 8 上安装并运行了 Java 所有迹象 至少我所知道的 都表明 Java 已安装并可运行
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • 当单元格内的 JComboBox 中有 ItemEvent 时,如何获取 CellRow

    我有一个 JTable 其中有一列包含 JComboBox 我有一个附加到 JComboBox 的 ItemListener 它会根据任何更改进行操作 但是 ItemListener 没有获取更改的 ComboBox 所在行的方法 当组合框
  • 运行 Jar 文件时出现问题

    我已将 java 项目编译成 Jar 文件 但运行它时遇到问题 当我跑步时 java jar myJar jar 我收到以下错误 Could not find the main class myClass 类文件不在 jar 的根目录中 因
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • 如何修复“sessionFactory”或“hibernateTemplate”是必需的问题

    我正在使用 Spring Boot JPA WEB 和 MYSQL 创建我的 Web 应用程序 它总是说 sessionFactory or hibernateTemplate是必需的 我该如何修复它 我已经尝试过的东西 删除了本地 Mav
  • KeyPressed 和 KeyTyped 混淆[重复]

    这个问题在这里已经有答案了 我搜索过之间的区别KeyPressedand KeyTyped事件 但我仍然不清楚 我发现的一件事是 Keypressed 比 KeyTyped 首先被触发 请澄清一下这些事件何时被准确触发 哪个适合用于哪个目的
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项
  • javax.persistence.Table.indexes()[Ljavax/persistence/Index 中的 NoSuchMethodError

    我有一个 Play Framework 应用程序 并且我was使用 Hibernate 4 2 5 Final 通过 Maven 依赖项管理器检索 我决定升级到 Hibernate 4 3 0 Final 成功重新编译我的应用程序并运行它
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item

随机推荐