我使用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。
有什么想法吗?
答案 0 :(得分:3)
您需要使用RSAPublicKeySpec
String modulus="106394877608018766537720801416655991345106535990850729605963854419450103716730599362154190537257597233014065015311499176359112816419965961469419756050290964343366687334245741905264407605904082573446954295309549250335299907317631410981650257400135070254491184426528002396792285738067623733919575203674519111607";
RSAPublicKeySpec spec = new RSAPublicKeySpec(new BigInteger(modulus),BigInteger.valueOf(65537));
Key key = KeyFactory.getInstance("RSA").generatePublic(spec);