Android弹性城堡:IOException

我使用Sun的keytool来创build一个Bouncy城​​堡密钥库并将证书导入到其中。 keytool确实在Bouncy城​​堡格式中生成了一个密钥库。

然后,我尝试将Bouncy城​​堡密钥库导入到Android程序中。 我能够得到“BKS”密钥库的一个实例,但在密钥库上调用加载

"java.io.IOException: Wrong version of key store". 

这是代码

 KeyStore keyStore = KeyStore.getInstance("BKS"); InputStream is = new FileInputStream("/mnt/sdcard/ArcGIS/mystore.bks"); keyStore.load(is, "abcdef".toCharArray()); 

我尝试了从http://www.bouncycastle.org/latest_releases.html下载的Bouncy城​​堡JAR的各种版本

我究竟做错了什么?

谢谢,Ranjit

Solutions Collecting From Web of "Android弹性城堡:IOException"

似乎Android 4.0.3(API版本15)附带的BouncyCastle版本尝试打开使用最新的BouncyCastle库生成的密钥库时失败。 当我使用bcprov-jdk15on-147.jar创build密钥库时,我的示例Android应用程序失败,出现java.io.IOException: Wrong version of key store错误。

但是,如果密钥库是使用bcprov-jdk16-146.jar库创build的,则可以由应用程序加载。 我的解决scheme是用这个较旧的库创build密钥库。

据推测,这也将是旧的API版本的情况下, 在创build密钥库时尝试旧版本的BouncyCastle。

解决。 keytool命令缺less“-storetype BKS”参数,所以虽然生成了BKS密钥库文件,但它可能是无效的。

此问题是由于您的BKS证书密码长度,它必须小于或等于7个字符。 这是美国政策和美国出口pipe制的问题(不是由于技术原因)。

重新导出您的证书使用7个字符长度,它将工作。

希望能帮助到你