1

Win 2003 32ビットでは、CryptExportKeyコール(dwFlags = 0)でPRIVATEKEYBLOBを正常にエクスポートします。次に、Windows Server 2008の64ビットで実行可能な64ビットの鍵blobをインポートしようとしましたが、CryptImportKeyの呼び出しはNTE_BAD_DATAで失敗します。暗号化プロバイダは/インポートマッチをエクスポートするCryptoAPI - 異なるバージョンのWindows間でのキーのエクスポート/インポート

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

の呼び出しパスワードで初期化されている両方の場合において

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

さまざまな種類のシステム(Win 2003 32ビットとWin 2008 64ビット)が予想される障害の原因であり、これを動作させる方法はありますか?

答えて

0

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

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

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