0

Microsoft CryptoAPI のテスト アプリケーションを作成しています。2 番目のパーティの公開鍵を使用して一方のパーティの秘密鍵をエクスポートし、その秘密鍵を 2 番目のパーティの秘密鍵としてインポートします (これにより、通信用の共有秘密鍵が設定されます)。これが私のコードです:

if(!CryptExportKey(encryptT->hSymKey, decryptT->hPubKey, SIMPLEBLOB, 0, keyExBuf, &bufLen)) {
    FormattedDebugPrint(NULL, GetLastError(), "could not export secret key", TRUE);
    return -1;
}
if(!CryptImportKey(decryptT->hCryptProv, keyExBuf, bufLen, decryptT->hPubKey, 0, &(decryptT->hSymKey))) {
    FormattedDebugPrint(NULL, GetLastError(), "could not import secret key", TRUE);
    return -1;
}

そして、これはエラーを与えます:

80090001: Bad UID.

公開鍵ペアは、次の呼び出しによって、encryptT と decryptT (送信者、受信者) の両方に対して生成されます。

CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))

エラーの原因は何ですか?

ありがとう、

4

1 に答える 1

0

気にしないで、私はそれを理解しました。基本的に、同じ方法で初期化されていても、別の公開鍵を直接使用することはできません。最初にその公開鍵をエクスポートしてから、ハンドルを使用して相手の暗号化プロバイダーにインポートする必要がありました。

于 2010-04-23T18:57:31.433 に答える