0

场景如下:我在一年前创建并发布了一个 android 应用程序。我使用 Java 5 创建密钥库和别名。现在,当我尝试使用此处的说明签署我的应用程序时:http: //developer.android.com/tools/publishing/app-signing.html我得到了这个:

keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect

我很肯定密钥库没有被破坏,因为它的二进制文件与我在发布原始应用程序时提交给私人 git 存储库的文件没有任何关系。密码未更改,并已通过 passpack 维护。

发生了什么变化:我的操作系统和 java 版本。我最初运行的是 OS X 10.5 和 Java 5.0,现在使用的是 OS X 10.6.8 和 Java 6。

我想我已经将其缩减为加密不匹配。任何人都知道该设置的默认加密是什么?

此外,我可能使用 Eclipse ADT 20.x 为 eclipse ganymede/helios 构建了密钥库。也找不到任何关于它的默认信息。

4

1 回答 1

0

尽管应用签名说明告诉您使用密钥大小为 2048 的 RSA,但 Java 5 的原始默认值并不相同。

这是最终解锁使用 Java 5.0 创建的密钥库的组合:

keytool -list -v -keystore sumall_android_keystore -keyalg DSA -keysize 1024 -sigalg SHA1withDSA

Java 5.0 的 keytool 默认使用 DSA 1024 创建密钥。
Java 6 和 7 都更改了默认加密。

请参阅: http ://docs.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html 中支持的算法和密钥大小

于 2013-09-04T18:02:23.890 回答