byte []數組以公鑰我得到一個錯誤:錯誤轉換字節數組公鑰的Java
Exception in thread "main" java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: short read of DER octet string at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(Unknown Source) at java.security.KeyFactory.generatePublic(Unknown Source)
這是代碼的一部分,讓我這個錯誤:
byte[] publicKeyBytes = keystring.getBytes();
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKeyBytes);
PublicKey publicKey2 = keyFactory.generatePublic(publicKeySpec);
之前檢查過,我從字符串中獲得的byte []數組與原始數組相同。 謝謝
如何獲得'keystring'? 'X590EncodedKeySpec'需要DER格式,你可以通過'publickey.getEncoded()'得到。 –
我得到它通過tcp,所以在「服務器」我從publickey.getEncoded()轉換爲字符串,而不是發送它。在客戶端它是我收到的密鑰串 –
你如何將它從編碼轉換爲'String'?根據字符集的不同,您可能會更改字節。 base64可能是字符串形式的合適字節編碼。 –