InvalidKeyException:使用RSA密钥的Java中的无效密钥格式

时间:2012-08-14 13:06:14

标签: java web-applications rsa

我使用java keygenerator生成了一个public:

  

Sun RSA公钥,1024位模数:   106394877608018766537720801416655991345106535990850729605963854419450103716730599362154190537257597233014065015311499176359112816419965961469419756050290964343366687334245741905264407605904082573446954295309549250335299907317631410981650257400135070254491184426528002396792285738067623733919575203674519111607   公共指数:65537

我从客户端发送此密钥(通过复制,粘贴)并收到与字符串完全相同的密钥。然后我试着重建它:

byte [] bytes = publicKey.getBytes("UTF-8");
Key key = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(bytes));

然后我从函数返回。 我从第2行得到Invalid Key Exception,我在那里形成了Key。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您需要使用RSAPublicKeySpec

String modulus="106394877608018766537720801416655991345106535990850729605963854419450103716730599362154190537257597233014065015311499176359112816419965961469419756050290964343366687334245741905264407605904082573446954295309549250335299907317631410981650257400135070254491184426528002396792285738067623733919575203674519111607";
    RSAPublicKeySpec spec = new RSAPublicKeySpec(new BigInteger(modulus),BigInteger.valueOf(65537));

    Key key = KeyFactory.getInstance("RSA").generatePublic(spec);