có một chuỗi được gửi từ trong định dạng dưới đây:Làm thế nào để chúng ta chuyển đổi một chuỗi từ PEM để der định dạng
-----BEGIN RSA PUBLIC KEY-----
MIGHAoGBANAahj75ZIz9nXqW2H83nGcUao4wNyYZ9Z1kiNTUYQl7ob/RBmDzs5rY
mUahXAg0qyS7+a55eU/csShf5ATGzAXv+DDPcz8HrSTcHMEFpuyYooX6PrIZ07Ma
XtsJ2J4mhlySI5uOZVRDoaFY53MPQx5gud2quDz759IN/0gnDEEVAgED
-----END RSA PUBLIC KEY-----
Làm thế nào để tôi xây dựng một Object PublicKey từ chuỗi này? đã thử dưới đây Tháo header và footer và base64 giải mã bộ đệm
public static PublicKey getFromString(String keystr) throws Exception
{
//String S1= asciiToHex(keystr);
byte[] keyBytes = new sun.misc.BASE64Decoder().decodeBuffer(keystr);
X509EncodedKeySpec spec =
new X509EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePublic(spec);
}
Đây không bất kể là định dạng chính không hợp lệ hoặc sẽ nhận được dưới đây lỗi
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: algid parse error, not a sequence
at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:188)
at java.security.KeyFactory.generatePublic(KeyFactory.java:304)
at PublicKeyReader.getFromString(PublicKeyReader.java:30)
at Tst.main(Tst.java:36)
The Key đang được tạo xuyên qua các API của openSSL PEM_write_bio_RSAPublicKey(bio, rsa);
đã sử dụng liên kết .Nhưng sẽ không làm converstion để der định dạng – MSSV
Lưu ý rằng những gì bạn đang cố gắng làm không thực sự là "chuyển đổi thành DER". Chuyển đổi thành DER chỉ giải mã base64 ở đây và xuất nó như là một chuỗi các byte. Bạn đang cố gắng giải mã cấu trúc ASN.1. – Bruno