【发布时间】:2021-06-07 23:10:33
【问题描述】:
如何将公钥 RSA 保存到“AndroidKeyStore”密钥库?
我开发了一个应用程序,它使用 RSA-AES 来加密两个对等方之间的数据。这有两个步骤,第一步是将公钥交换给其他对等方。然后使用 AES 会话密钥对数据进行加密,并使用 RSA 密钥对 AES 会话密钥进行加密。 我研究公钥可能可以与证书一起保存在密钥库中,所以我执行以下代码:
KeyPairGenerator kpg = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore");
kpg.initialize(new KeyGenParameterSpec.Builder("key", KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setKeySize(2048)
.build());
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
Certificate x509Certificate = CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(keyStore.getCertificate("key").getEncoded()));
keyStore.setCertificateEntry("key-new", x509Certificate);
Certificate certificate = keyStore.getCertificate("key-new");
当我 getCertificate (KeyStore: KeyStore 异常
android.os.ServiceSpecificException:(代码 7))。
所以我编码错误或“AndroidKeyStore”不能用来保存其他人的公钥。
【问题讨论】:
标签: android encryption android-keystore