我試圖讓2個apllications使用RSA互相交談。第一個是用C++,第二個用java。首先需要將公鑰發送給java應用程序。我正在使用一個Java和C++(VS)RSA加密
CryptExportKey(m_hCryptKey, NULL, PUBLICKEYBLOB, 0, pbKeyBlob, &dwBlobLen);
功能。 在Java應用程序中,我試圖使用此功能將其導入:
public PublicKey getPublicKeyFromBytes(byte[] keyBytes) throws NoSuchAlgorithmException, InvalidKeySpecException {
KeyFactory keyFactory;
keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(keyBytes);
return keyFactory.generatePublic(pubKeySpec);
}
它拋出InvalidKeySpecException。你能告訴我我該如何導入/導出密鑰?
顯然,C++側不發送只是原始密鑰字節,但你爲什麼不使用SSL? – EJP
CryptExportKey以非標準,專有的,Microsoft定義的格式返回數據。 –
@GregS可能這個時候只,[微軟並經過指定結構的運動(http://msdn.microsoft.com/en-us/library/windows/desktop/aa375601%28v=vs.85% 29.aspx),因此解析應該相對簡單(使用'ByteBuffer'是個好主意,因爲它似乎都使用小端編碼)。 –