質問

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、私は信じています)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top