Java 如何用公钥包装密钥库中的密钥?

Java 如何用公钥包装密钥库中的密钥?,java,android,encryption,Java,Android,Encryption,我对Android编程感兴趣。我正在使用对称和非对称加密,我想用公钥包装Android密钥库中的密钥,但失败了。我可以从钥匙店拿到钥匙,但我不能把它包起来 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.WRAP_MODE, publicKey); SecretKey secret = (SecretKey) keyStore.getKey("key",null); byte[] encrypted = ciph

我对Android编程感兴趣。我正在使用对称和非对称加密,我想用公钥包装Android密钥库中的密钥,但失败了。我可以从钥匙店拿到钥匙,但我不能把它包起来

 Cipher cipher = Cipher.getInstance("RSA");
 cipher.init(Cipher.WRAP_MODE, publicKey);
 SecretKey secret = (SecretKey) keyStore.getKey("key",null);
 byte[] encrypted = cipher.wrap(secret);
错误:

InvalidKeyException:无法包装密钥,空编码

我尝试在上面的代码中使用这个密钥对和密钥-我通过对称和非对称加密成功地加密和解密了一些字符串

什么有趣?我试图通过KeyGenerator生成新的密钥,包装成功。我有点困惑。我不能用密钥包装它,它是从密钥库加载的


您能帮助我吗?

我相信您在使用时出现了此错误,因为我刚刚收到了此错误

我发现BouncyCastle正在调用引发错误的以下代码:

byte[]encoded=key.getEncoded();
if(encoded==null){
抛出新的InvalidKeyException(“无法包装密钥,空编码”);
}

将不允许您访问私钥的值,而在您尝试访问私钥时将返回
null
,这就是引发上述错误的原因。

我相信您在使用时遇到此错误,因为我刚刚收到此错误

我发现BouncyCastle正在调用引发错误的以下代码:

byte[]encoded=key.getEncoded();
if(encoded==null){
抛出新的InvalidKeyException(“无法包装密钥,空编码”);
}

将不允许您访问私钥的值,而在您尝试访问私钥时将返回
null
,这就是引发上述错误的原因。

“我无法包装它”描述不够。您是否收到错误?是的,InvalidKeyException:无法包装密钥,空编码“我无法包装它”描述不够。您是否收到错误?是,InvalidKeyException:无法包装密钥,空编码