如何将keystore生成的密钥对限制为特定的应用程序

时间:2016-05-29 15:37:40

标签: android keystore

在一个jar文件中,我使用密钥库生成密钥对,并使用公钥我加密字符串并使用私钥我能够解密字符串。 使用这个jar文件,我实现了一个apk,它的工作正常。由于密钥存储在设备内存中,我想确保没有其他应用程序可以从内存中使用这些密钥,这样除了原始应用程序之外,数据不会被解密。

这是我的示例代码:

生成密钥对:

KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
generator.initialize(spec);
KeyPair keyPair = generator.generateKeyPair();

用于检索publickey:

KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry)keyStore.getEntry(alias, null);
RSAPublicKey publicKey = (RSAPublicKey) privateKeyEntry.getCertificate().getPublicKey();

用于检索私钥:

KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry)keyStore.getEntry(alias, null);
Cipher output = Cipher.getInstance("RSA/ECB/PKCS1Padding");
output.init(Cipher.DECRYPT_MODE, privateKeyEntry.getPrivateKey());

如何确保这些公钥和私钥只能用于我的应用,其他任何应用都无法访问这些密钥?

1 个答案:

答案 0 :(得分:0)

您只能从自己的应用访问Android应用的Android Keystore密钥。见https://developer.android.com/training/articles/keystore.html#WhichShouldIUse