我可以使用Java keytool创建的密钥库在Android SDK中加密数据吗?

我可以使用Java keytool创建的密钥库在Android SDK中加密数据吗?,java,android,cryptography,keystore,Java,Android,Cryptography,Keystore,通过使用Android文档中的说明,我获得了Android开发中使用的标准密钥库: keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 它显然是用来对我的apk进行签名的,但我是否也可以将“我的发布密钥.keystore”加载到Android SDK中,并使用它来加密/解密数据 我用这种方法很难做到这一点: Fil

通过使用Android文档中的说明,我获得了Android开发中使用的标准密钥库:

keytool -genkey -v -keystore my-release-key.keystore
-alias alias_name -keyalg RSA -keysize 2048 -validity 10000
它显然是用来对我的apk进行签名的,但我是否也可以将“我的发布密钥.keystore”加载到Android SDK中,并使用它来加密/解密数据

我用这种方法很难做到这一点:

    FileInputStream is = new FileInputStream(keystoreFile);
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
    keystore.load(is, "password".toCharArray());
我收到这个错误:

java.io.IOException:密钥存储的版本错误


这是一个猜测,但也许JKS格式在java6(Android仍在使用)之后发生了变化,您使用更高版本生成了密钥库。此外,您可能应该使用
KeyStore.getInstance(“JKS”)
,而不是使用默认类型,因为它在Android上可能不同。除非您计划让用户输入密钥库和密钥的密码短语,否则将密钥库烘焙到您的应用程序中将毫无用处。我可以反编译你的应用程序并检索密码短语。更糟糕的是,您现在允许其他开发人员创建由您的签名密钥签名的应用程序,例如对该应用程序的黑客升级。我这样做了,得到了以下错误:java.security.nosuchagorithmexception:KeyStore JKS实现。我读到安卓不再支持JKS了,所以安卓确实改成了BKS格式,与JKS不兼容。我不确定我的用例是否还有可能。你试过ntoskrnl的“胡乱猜测”吗?我宁愿自己称之为“有教养的猜测”。