7

Windows XPでSHA256CryptoServiceProviderおよび関連するSHA2プロバイダーを使用することは可能ですか?プロバイダーがVista以降に含まれている暗号化サービスを使用していることを知っています。これらのサービスをMicrosoftからXPにインストールすることは可能ですか?

編集:これがWindows XPでサポートされていることに関して、MSDNのドキュメントが間違っているという詳細情報を提供する必要がありました。http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=355031を参照してください。これは、設計上、Microsoftによって承認され、受け入れられています。ただし、(私が見た)どこにも回避策がリストされていないため、これが正しく機能するために必要なサービスをインストールできるかどうか、またはWinXPにIIS6または7をインストールしようとしているwindwillsに傾いているようなものかどうかはわかりませんでした。

4

3 に答える 3

13

MSDNのドキュメントは、意図的にXP SP3でサポートされるべきであるという意味で正しいようですが、そうでない場合は、.NET3.5のバグが原因です。

AesCryptoServiceProviderとSHA256CryptoServiceProviderはどちらも、「Microsoft Enhanced RSA andAESCryptographicProvider」という名前の同じ暗号化サービスを使用します。XPでは、サービスの名前が少し異なります:「MicrosoftEnhanced RSA and AES CryptographicProvider(Prototype)」。AesCryptoServiceProviderのコンストラクターは、次の簡単なチェックを実行します。

string providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider";
if(Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 1)
{
    providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)";
}

SHAxxxCryptoServiceProviderクラスのコンストラクターは、(プロトタイプ)名をチェックしません。これが、XPで失敗する理由です。もしそうなら、彼らは成功するでしょう。

特定のPCには簡単な回避策があります。レジストリキーHKEY_LOCAL_MACHINE\SOFTWARE \ Microsoft \ Cryptography \ Defaults \ Providerに移動し、「Microsoft Enhanced RSA and AES Cryptographic Provider(Prototype)」という名前のサブキーを見つけて、.regにエクスポートし、この.regを編集して、「(Prototype)」を削除します。その名前から。インポートし直すと、元のキーが(プロトタイプ)なしの新しいキーに同じ内容で複製されます。今後、SHA256CryptoServiceProviderはこのXPSP3マシンで動作します。

于 2010-07-27T08:11:42.940 に答える
2

私は次のスニペットで成功しましたが、実際には満足しておらず、SHA512その時点でインスタンス化するためのさまざまな一見無計画な方法に関するSOの質問をほぼ投稿しました。これは、Windows XP、7、および場合によってはVistaでテストされています(覚えていません)。

using System.Security.Cryptography;

        SHA512 hash;
        try
        {
            hash = new SHA512Cng( );
        }
        catch ( PlatformNotSupportedException )
        {
            hash = SHA512.Create( );
        }

これは。でも同じように機能するはずSHA256です。

また、両方のバージョンの出力をunix sha2ユーティリティと比較すると、両方ともSHA512が正しく実装されていることがわかりました。

于 2009-08-18T16:00:23.167 に答える
0

MSDN から: SHA256CryptoServiceProvider クラス

プラットフォーム: Windows Vista、Windows XP SP2、Windows Server 2003

于 2009-08-18T13:40:28.247 に答える