SHA256CRYPTOSERVICEPROVIDERとWINXPでの使用が可能ですか?
-
18-09-2019 - |
質問
Windows XPでSHA256CRYPTOSERVICEPROVIDERおよび関連するSHA2プロバイダーを使用することは可能ですか?プロバイダーは、Vista以上に含まれる暗号化サービスを使用していることを知っています。
編集: Windows XPでサポートされていることに関して、MSDNに関するドキュメントが間違っていることをより詳細に提供する必要があります。見る http://connect.microsoft.com/visualstudio/feedback/viewfeedback.aspx?feedbackid=355031 これは、Microsoftによってデザインとして認められ、受け入れられています。ただし、どこにもリストされている作業はありません(見た)ので、これが適切に動作する必要があるサービスをインストールすることができるかどうか、またはWinXPにIIS 6または7をインストールしようとするWindwillsで傾いているようなものかどうかはわかりませんでした。
解決
MSDNドキュメントはそれが正しいという意味で正しいようです したほうがいい XP SP3で設計上サポートされます。そうでない場合は、 バグ .NET 3.5で。
aescryptoserviceproviderとsha256cryptoserviceproviderの両方が、「Microsoft Enhanced RSAおよびAES暗号化プロバイダー」と呼ばれる同じCryptograhicsサービスを使用しています。 XPでは、サービスの名前はわずかに異なります。 「MicrosoftはRSAとAESの暗号プロバイダー(プロトタイプ)を強化しました」. 。 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)」という名前のサブキーを見つけて、それをエクスポートし、This .Reg and Delete "(prototype)"に編集します。インポートすると、元のキーが同じコンテンツを持つ(プロトタイプなし)新しいキーに複製されます。これから、SHA256CRYPTOSERVICEPROVIDERはこのXPSP3マシンで動作します。
他のヒント
私は次のスニペットで成功しましたが、私はそれにあまり満足していませんが、一見偶然のさまざまな方法についての質問をほとんど投稿しました。 SHA512
当時の。これは、Windows XP、7、およびおそらくVistaでテストされています(覚えていません)。
using System.Security.Cryptography;
SHA512 hash;
try
{
hash = new SHA512Cng( );
}
catch ( PlatformNotSupportedException )
{
hash = SHA512.Create( );
}
これは同じように機能するはずだと思います SHA256
.
また、両方のバージョンの出力をUNIX SHA2ユーティリティと比較すると、どちらもSHA512を正しく実装することが示唆されました。
MSDNから:SHA256CRYPTOSERVICEPROVIDERクラス
プラットフォーム:WindowsVista、Windows XP SP2、Windows Server 2003