此错误意味着什么:
java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0c0000b9:ASN.1 encoding routines:OPENSSL_internal:WRONG_TAG我的代码是:
public static byte[] encryptByPublicKey(byte[] data, String key)
throws Exception {
key = key.replace("-----BEGIN RSA PUBLIC KEY-----\r\n", "").replace("-----END RSA PUBLIC KEY-----", "");
byte[] bytes = decryptBASE64(key);
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(bytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
PublicKey pkPublic = keyFactory.generatePublic(x509KeySpec);
Cipher pkCipher = Cipher.getInstance("RSA");
pkCipher.init(Cipher.ENCRYPT_MODE, pkPublic);
return pkCipher.doFinal(data);
}我确信,我有正确的数据和密钥(在php中创建的),但我得到以下错误:
PublicKey pkPublic = keyFactory.generatePublic(x509KeySpec);在我的其他android (没有php服务器)应用程序中,这个代码没有任何问题,而且我通过相同的加密/解密代码得到了正确的答案。
有没有可能在两个项目中使用的函数,具有相同的输入和输出值,在相同的软件中,具有不同的操作?是!这是可能的,但是Android Studio和Phpstorm呢?是关于Openssl cer的吗?或者其他库?或者其他一些原因?我如何克服这个错误?
如果你能帮我,我将不胜感激。提前感谢你的回答。
https://stackoverflow.com/questions/44616565
复制相似问题