我使用java keygenerator生成了一个公共:


  Sun RSA公钥,1024位模数:
  1063948776080187665377208014166559913451065359908507296059638544194501037167305993621541905372575972330140650153114991763591128164199659614694197560502909643433666873342457419052644076059040825734469542953095492503352999073176314109816509814001350702544912545289002
  公开指数:65537


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

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


然后我从函数返回。
我从形成Key的第2行中获取Invalid Key Exception

有任何想法吗?

最佳答案

您需要使用RSAPublicKeySpec

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

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

07-26 02:20