2017-08-21 25 views
0

この状況で私は上陸しました!'HashAlgorithm'に 'Create'の定義が含まれていません

私は私のMVC 5アプリでこの機能を使用するために使用される:

public virtual string CreateHash(byte[] data, string hashAlgorithm = "SHA1")  
{ 
    if (String.IsNullOrEmpty(hashAlgorithm)) 
     hashAlgorithm = "SHA1"; 

    var algorithm = HashAlgorithm.Create(hashAlgorithm); 


    var hashByteArray = algorithm.ComputeHash(data); 
     return BitConverter.ToString(hashByteArray).Replace("-", ""); 
} 

は、今私はASP.NETコアでアプリを作成しています。 エラーが見つかりました。

RNGCryptoServiceProvider()と同じ機能も同じ問題がありました。代わりにRandomNumberGenerator()を使用しました。私はこれのための任意の回避策を見つけることができません!

ご協力いただきまして誠にありがとうございます。

+1

あなたは、静的なファクトリメソッドに文字列から独自のマッピング辞書を書き留めする必要があり ')(' SHA1.Createを() 'を使用することができ、元の' HashAlgorithm.Createを再現します電話する。 –

+0

'var algorithm = SHA1.Create();'を使ってみましたが、うまくいきます... Tysm! –

+0

しかし、私は別のアルゴリズムを選択する必要がある場合、それは可能ですか? –

答えて

4

文書化されたバグ#22626は修正されません。

回避策は次のとおりです。

public static HashAlgorithm Create(String hashAlgorithm) { 
    return (HashAlgorithm) CryptoConfig.CreateFromName(hashAlgorithm); 
}