求助,openssl生成的RSA公钥不能用

zhangqj_ 2016-09-23 09:33:33
我用openssl生成的RSA公私钥对为什么在java代码中读取公钥就出现异常,我生成公私钥的命令是这样的

genrsa -out private_rsa.pem 1024
rsa -in private_rsa.pem -pubout -out public_rsa.pem
rsa -pubin -in public_rsa.pem -RSAPublicKey_out
pkcs8 -topk8 -inform PEM -in private_rsa.pem -outform PEM -nocrypt

然后读取RSA公钥的代码是这样的:
public static void main(String[] args) throws Exception {
String publicKey = "MIIBCgKCAQEAu5Vf38oBcdF1Jtikuh11Wq+uZENdI16eqtHuvKaWVQ90zoeWPpY+\n" +
"IuIJ5/G8VudBnOtHcyOru4WHWpd2FI4TJv2LjAXtRtZ3h2ELEcfLMF49lX3aJNsw\n" +
"u4iq+rpwj0JqKWtZwm7EP6fRc86hRFeNVGwjQyNTNsnBjFucf9fLUyXBkvqeI0T2\n" +
"2vKN2RzkR65wPKbH6TS0Q3rF7+9MyCtjVkg29Q6Pbc20JbTY/YPWTdUnXShScmht\n" +
"i3+67XbEzmbU2tMEYJu57uUslgGSOVxgtzyD1aOrcKBJKXmAzb05hTrTX8m7NGyh\n" +
"PtDTHriyee7QePmBNhB0d6pEZ7oM72ecbwIDAQAB";

X509EncodedKeySpec rsaKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(publicKey));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey rsaPubKey = keyFactory.generatePublic(rsaKeySpec);
}

先做BASE64解密,然后再读取,可是在PublicKey rsaPubKey = keyFactory.generatePublic(rsaKeySpec);这一句就出现异常,提示:java.security.InvalidKeyException: IOException: algid parse error, not a sequence,我在网上查了好久也没找到答案,大神们帮帮我
...全文
305 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiangrong 2016-11-22
  • 打赏
  • 举报
回复
java代码中默认使用pkcs#8格式的公钥,所以无需做下面操作的转换,此操作将转换为pkcs#1格式
rsa -pubin -in public_rsa.pem -RSAPublicKey_out

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧