将RSA pem key String转换为der byte []

时间:2014-01-16 22:07:45

标签: java encryption amazon-web-services pem der

我正在尝试将RSA pem键(包含在String中)转换为byte [],就像给定.pem文件FileInputStream时此方法一样:

http://jets3t.s3.amazonaws.com/api/org/jets3t/service/security/EncryptionUtil.html#convertRsaPemToDer(java.io.InputStream)

我试过这个:

String pemKey = "-----BEGIN RSA PRIVATE KEY-----\r\n"
         + "{base64 encoded key part omitted}\r\n"
         + "{base64 encoded key part omitted}\r\n"
         + "{base64 encoded key part omitted}\r\n"
         + "-----END RSA PRIVATE KEY-----";
String base64 = pemKey
        .replaceAll("\\s", "")
        .replace("-----BEGINRSAPRIVATEKEY-----", "")
        .replace("-----ENDRSAPRIVATEKEY-----", "");

return Base64.decode(base64.getBytes());

我希望结果等同于org.jets3t.service.security.EncryptionUtil.convertRsaPemToDer()返回的结果,但在生成CloudFront流式网址时似乎不起作用。

知道我做错了吗?

1 个答案:

答案 0 :(得分:3)

只需将字符串包装在ByteArrayInputStream中即可使用您链接的方法:

InputStream pemStream = new ByteArrayInputStream(pemKey.getBytes());
byte[] derKey = EncryptionUtil.convertRsaPemToDer(pemStream);