cryptoapi-さまざまなバージョンのウィンドウ間のキーのエクスポート/インポート
-
29-09-2019 - |
質問
2003年の32ビットで、私は正常にエクスポートします PRIVATEKEYBLOB
とともに CryptExportKey
呼び出し(dwflags = 0)。次に、64ビット実行可能ファイルでWin Server 2008 64ビットにキーブロブをインポートしようとします。 CryptImportKey
で失敗します NTE_BAD_DATA
.
どちらの場合も、Cryptoプロバイダーは、
cryptacirecontext(&hprov、szcontainer、null、prov_rsa_aes、crypt_machine_keyset)
マッチをエクスポート/インポートするパスワード。公開鍵はaに基づいています CryptDeriveKey
MD5ハッシュのパスワードのハッシュは、プレーンテキストの表現で同一のパスワードです。パブリックキーが2つのシステムで等しくなるかどうかはわかりません。
さまざまなタイプのシステム(Win 2003 32ビット対Win 2008 64ビット)は、失敗の予想される原因ですか、そしてこれを機能させる方法はありますか?
解決
ATLのccryptderivedKeyによって生成されたパブリックキーは、2つのシステムで等しくなかったと推測されるように。 ccryptderivedKeyのデフォルト設定は、ATLライブラリの2つのバージョンで異なる必要があります。
ソースサーバーと宛先サーバーの両方にアクセスできたため、一貫した方法でキーを再輸出してインポートすることができました - 塩のキーサイズ、存在を指定しました。
ccryptderivedKey ::初期化メソッドの正確な設定がATLライブラリの以前のバージョンであったことを知っておくといいでしょう(Visual Studio 2005、私は信じています)。