我试图以这种方式从字符串创建公钥:
byte[] keyBytes = Base64.decode(publicKeyStr.getBytes("utf-8"), Base64.DEFAULT);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
PublicKey publicKey = keyFactory.generatePublic(spec);
但是
keyFactory.generatePublic(spec);
导致错误:
java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long
创建PublicKey表单的任何其他解决方案和示例?
字符串是:
87Avu4YRFh25mG / 5 / vW7tFXORD3WYqByKZDHpcqstXKDyLYFtm8arbwXDUxcDRSJUKdZx07L1fGvExfslShssJ22nHA4bScQ7yhgrtsxNUa5NPPP / YlR9DLAnjFzf3AEbW26fLO5luQtDIDmjSvwNE6ZwAIjhRJ3HXpqw2hFMvc = AQAB
答案 0 :(得分:1)
我在RSA. Java Encryption .NET Decryption
找到了解决方案问题是我的字符串是一个字符串中的模数+指数。 当我把它分成两个不同的字符串并在那里生成。关键是成功产生的。编码UTF-16LE也存在问题。