有一个字符串被从以下格式发送:我们如何转换从PEM字符串为DER格式
-----BEGIN RSA PUBLIC KEY-----
MIGHAoGBANAahj75ZIz9nXqW2H83nGcUao4wNyYZ9Z1kiNTUYQl7ob/RBmDzs5rY
mUahXAg0qyS7+a55eU/csShf5ATGzAXv+DDPcz8HrSTcHMEFpuyYooX6PrIZ07Ma
XtsJ2J4mhlySI5uOZVRDoaFY53MPQx5gud2quDz759IN/0gnDEEVAgED
-----END RSA PUBLIC KEY-----
我如何构建此字符串从一个公开的对象? 试过下面 删除页眉和页脚和的base64解码
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);
}
这失败无论是作为一个无效的密钥格式或将得到以下错误
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)
关键是被救援人员到场生成的缓冲API的openSSL PEM_write_bio_RSAPublicKey(bio, rsa);
是否使用了链接。但不会做converstion为DER格式 – MSSV 2010-10-27 12:20:25
请注意,您尝试执行的操作并不是真正的“转换为DER”。转换为DER只是解码base64,并将其输出为字节序列。您正在尝试解码ASN.1结构。 – Bruno 2010-11-03 16:34:00