1

RSAを使用して2つのアプリケーションを互いに通信させようとしています。1 つ目は C++ で、2 つ目は Java です。まず、公開鍵を Java アプリケーションに送信する必要があります。私は使用しています

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 をスローします。キーをインポート/エクスポートする方法を教えてください。

4

1 に答える 1

1

You will have to write a decoder for the Microsoft RSA public key structure. Fortunately that structure is well defined. Note that it uses little-endian encoding so you could first wrap the structure in a ByteBuffer setting the order to little-endian.

Then you should convert the public exponent and modulus parts to a BigInteger using BigInteger.valueOf(1, bigEndianByteArray). Trick is to get the bytes in the bigEndianByteArray in the correct order after reading them from the ByteBuffer.

于 2013-06-23T12:55:10.367 に答える