1

Win 2003 32ビットではPRIVATEKEYBLOBCryptExportKey呼び出しを使用してaを正常にエクスポートしました(dwFlags = 0)。次に、64ビットの実行可能ファイルを使用してWin Server 2008 64ビットにキーblobをインポートしようとすると、の呼び出しはでCryptImportKey失敗しNTE_BAD_DATAます。

どちらの場合も、暗号プロバイダーはへの呼び出しで初期化されます

CryptAcquireContext(&hProv、szContainer、NULL、PROV_RSA_AES、CRYPT_MACHINE_KEYSET)

エクスポート/インポートするパスワードが一致します。CryptDeriveKey公開鍵は、プレーンテキストの表現が同一であるパスワードのmd5ハッシュに基づいています。公開鍵が2つのシステムで等しくなるかどうかはわかりません。

さまざまな種類のシステム(Win200332ビットとWin200864ビット)が予想される障害の原因ですか。これを機能させる方法はありますか?

4

1 に答える 1

0

推測されるように、ATLのCCryptDerivedKeyによって生成された公開鍵は2つのシステムで等しくありませんでした。CCryptDerivedKeyのデフォルト設定は、2つのバージョンのATLライブラリで異なっている必要があります。

ソースサーバーと宛先サーバーの両方にアクセスできたので、アルゴリズム、キーサイズ、ソルトの存在を指定して、一貫した方法でキーを再エクスポートおよびインポートできました。

CCryptDerivedKey :: Initializeメソッドの正確な設定が以前のバージョンのATLライブラリ(Visual Studio 2005、私は信じています)にあったことを知っておくと便利です。

于 2010-12-08T21:48:50.653 に答える