Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
InvalidKeyException:Java中使用RSA密钥的密钥格式无效_Java_Web Applications_Rsa - Fatal编程技术网

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

InvalidKeyException:Java中使用RSA密钥的密钥格式无效,java,web-applications,rsa,Java,Web Applications,Rsa,我使用java密钥生成器生成了一个公共密钥: Sun RSA公钥,1024位模数: 1063948776080187665377208014166559913451065359908507296059638544194501037167305993621541905372575972330140650153114991763591128164199659614694197560502909643433666873342457419052644076059040825734469542953095

我使用java密钥生成器生成了一个公共密钥:

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

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

byte [] bytes = publicKey.getBytes("UTF-8");
Key key = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(bytes));
然后我从函数返回。 我从第2行中获取
无效密钥异常


有什么想法吗?

您需要使用RSAPublicKeySpec

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

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

您需要使用RSAPublicKeySpec

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

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