已知16进制BCD编码的RSA公钥,怎么使用rsa加密?

sparrow82 2013-03-05 05:51:44
我现在拿到一个16进制256位的rsa秘钥,怎么使用他做rsa加密啊?好像用一般的java里面的rsa加密不行吧?一直报
Caused by: java.security.InvalidKeyException: invalid key format
这个错误。

比如说公钥为:D548C6267CC503F1E926776A97F8644CAA67167E8FA5D74FD1F4E0BCB3608BD1583E41B102B5B4617E53B90A0C67EA652F8D96B40CFDDA6BC1501432ADCE15E4B5B916568893C94FF3CAC5ED5942FC604BAD1B12DF7683B25C6702BD8CF1BE2F5A4FFC97C82E42FD91E49A6EFF379F5F022F36E5395D64FC9430EEFCAC55F0A5

有人知道怎么把它转成java.security.PublicKey?还是说这种公钥得自己重新写rsa加密的算法?

谢谢~
...全文
387 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysan wu 2015-06-16
  • 打赏
  • 举报
回复
/** * 使用模和指数生成RSA公钥 * 注意:【此代码用了默认补位方式,为RSA/None/PKCS1Padding,不同JDK默认的补位方式可能不同,如Android默认是RSA * /None/NoPadding】 * * @param modulus * 模 * @param exponent * 指数 * @return */ public static RSAPublicKey getPublicKey(String modulus, String exponent) { try { BigInteger b1 = new BigInteger(modulus); BigInteger b2 = new BigInteger(exponent); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); RSAPublicKeySpec keySpec = new RSAPublicKeySpec(b1, b2); return (RSAPublicKey) keyFactory.generatePublic(keySpec); } catch (Exception e) { e.printStackTrace(); return null; } }
ysan wu 2015-06-16
  • 打赏
  • 举报
回复
/** * 使用模和指数生成RSA私钥 * 注意:【此代码用了默认补位方式,为RSA/None/PKCS1Padding,不同JDK默认的补位方式可能不同,如Android默认是RSA * /None/NoPadding】 * * @param modulus * 模 * @param exponent * 指数 * @return */ public static RSAPrivateKey getPrivateKey(String modulus, String exponent) { try { BigInteger b1 = new BigInteger(modulus); BigInteger b2 = new BigInteger(exponent); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); RSAPrivateKeySpec keySpec = new RSAPrivateKeySpec(b1, b2); return (RSAPrivateKey) keyFactory.generatePrivate(keySpec); } catch (Exception e) { e.printStackTrace(); return null; } }
mesunwen 2014-02-26
  • 打赏
  • 举报
回复
C#也遇到这个问题,同样求答案
dracularking 2013-03-06
  • 打赏
  • 举报
回复
估计得这样才能构建一个PublicKey对象: PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(bytes)); bytes就是已知公钥的相应字节信息
sparrow82 2013-03-06
  • 打赏
  • 举报
回复
呵呵,没事。继续等待高手
搞什么哦 2013-03-06
  • 打赏
  • 举报
回复
额,才看清你的标题,请无视上一回复。
搞什么哦 2013-03-06
  • 打赏
  • 举报
回复
这个公钥是base64编码的,你把它解码成byte[]就能用了。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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