我正在尝试使用下一个代码从 Android 系统存储中导入私钥:
PrivateKey privateKey = KeyChain.getPrivateKey(activity, alias);
wherealias
使用KeyChain.choosePrivateKeyAlias()
方法检索。KeyChain.getPrivateKey
不返回null
,但 PrivateKey 对象包含错误的键(其所有重要字段都是null
)。我认为密钥不可导出并尝试在下一个代码中使用它:
Cipher rsa;
rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.ENCRYPT_MODE, privateKey);
byte[] enc = rsa.doFinal(str.getBytes());
但得到了来自 BouncyCastle 内部的NullPointerException 。
带有密钥的证书是使用从存储卡功能加载的 Android 标准从 PFX 文件中导入的。
我做错了什么?
UPD:我尝试对不同的 RSA 证书做同样的事情,结果是一样的 :(