我对Android编程感兴趣。我正在使用对称和非对称加密,我想通过公钥从Android密钥库中包装密钥,但我失败了。我可以从Key Store获取密钥,但我无法将其包装好。
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.WRAP_MODE, publicKey);
SecretKey secret = (SecretKey) keyStore.getKey("key",null);
byte[] encrypted = cipher.wrap(secret);
错误:
InvalidKeyException:无法换行键,空编码
我尝试在上面的代码中使用这个密钥对和密钥 - 我通过对称和非对称加密成功加密和解密了一些String。
有趣的是什么?我试图通过KeyGenerator生成新的密钥,并且包装成功。我有点困惑。我无法通过从KeyStore加载的密钥包装它。
你能帮我吗?
答案 0 :(得分:0)
我相信您在使用BouncyCastle时遇到了此错误,因为我也刚收到此错误。
我发现BouncyCastle正在调用以下引发错误的代码:
byte[] encoded = key.getEncoded();
if (encoded == null) {
throw new InvalidKeyException("Cannot wrap key, null encoding.");
}
Android KeyStore不允许您访问私钥的值,而是在尝试访问私钥时返回null
,这就是抛出上述错误的原因。