在与 Android 开发长期休息后签署 apk 时,我很惊讶我无法再输入一个空的密钥库密码来解锁它。是我一个人还是以前有可能?如果是这样,那是什么时候发生的变化,我怎么能设法解锁密钥库?
一些背景:也许我只是疯了,之前没有为密钥库使用空密码,但是我可以使用的唯一可能的密码也不起作用(我发誓,我没有机会' d 使用了另一个密码!)。
keytool
可以使用Java sdk 中的来操作密钥库。
尝试在您的密钥库上执行 keytool,并使用空密码提取证书。之后,将其导入新的密钥库。这一次,使用真正的密码。
开关-exportcert
将帮助您实现这一目标。
可能是您更新了 java sdk,因此您无法输入空密码(由于该工具的某些安全升级)。在这种情况下,您可以尝试安装较旧的 sdk 并执行上述操作。
祝你好运!
您不能对密钥库使用空密码。
我检查过,只要 jdk 1.3 keytool 不允许,请参阅http://docs.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html文档明确指出:
storepass必须至少有 6 个字符长。它必须提供给访问密钥库内容的所有命令。对于此类命令,如果未在命令行中提供 -storepass 选项,则会提示用户输入该选项。
为了好玩,我想尝试 jdk 1.2 中的 keytool 并下载它,因为它的文档没有说明密码是强制性的,但我需要一个 Windows NT 盒子来安装它!我绝对不认为 Android 曾经使用过这个 keytool 版本。
抱歉,您的密码似乎是:忘记了密码,或者使用大写锁定输入密码/激活了错误的键盘布局。:(
编辑:
如果不是布局问题,您可以尝试
您可以编写一个简单的 Java SE 程序来尝试使用您的密钥或列出别名,而不是使用 keytool。API应该(不是 100%)允许您使用空 ( ""
) 密码。
您还可以尝试使用portecle等第三方工具来列出/提取密钥。
尝试默认的android调试模式密钥库密码android
或java cacerts默认changeit
/changeme
。
我也遇到了这个问题,这很奇怪。我有一个不受任何密码保护的旧密钥库。我可以在 SoapUI 中成功使用它,但keytool
密钥库资源管理器无法打开它。我必须创建已经有密码的新密钥库,从那时起一切都很好。
我怀疑 Java 8 比 Java 7 更挑剔。
keytool -importkeystore -srckeystore client.jks -destkeystore client2.jsk -srcstoretype JKS -deststoretype JKS -deststorepass changeit
我在尝试使用none
作为默认密码的 hadoop 的密钥存储提供程序时遇到了同样的问题,请参阅:JavaKeyStoreProvider.java
我最终从 OpenJDK8 复制了原始keytool并删除了这个新实现中的限制(它是相同的,但没有 6 个字符的限制):KeytoolWithoutPasswordLimits
这样,我设法将其none
用作密码。
如果以上所有方法都失败了,您可以尝试破解它。相关问题:Android - 忘记密钥库密码。我可以解密密钥库文件吗?
这对我行得通:
keytool -list -keystore keyStoreFileWithotPassword.jks -protected
更正:事实证明列表功能无需输入实际密码即可工作!但是导入功能确实需要密码