0

次の結果が必要な場合:

RIPEMD-160("The quick brown fox jumps over the lazy dog") =
 37f332f68db77bd9d7edd4969571ad671cf9dd3b

私はこれを試しました:

string hash11 = System.Text.Encoding.ASCII.GetString(RIPEMD.ComputeHash(Encoding.ASCII.GetBytes("The quick brown fox jumps over the lazy dog")));

しかし、それは私に前の結果を与えません!

4

2 に答える 2

1

取得したいのは、バイト配列の16進表現です。各バイトは2文字の16進値で表される必要があります。

これを行う方法に関するいくつかの異なる例については、このスレッドを確認できます。

于 2012-01-04T08:10:13.790 に答える
1

ComputeHash 関数は、値 (0x37、0xF3、...) を含むバイト配列を提供します。GetString を使用すると、バイト内のすべての値が取得され、その値を持つ文字が使用されますが、値は文字列に変換されません。

次のように変換できます。

var bytes = RIPEMD.ComputeHash(Encoding.ASCII.GetBytes("The quick brown fox jumps over the lazy dog"));
string hash11 = "";
foreach(var curByte in bytes)
    hash11 = curByte.ToString("X2") + hash11; // or curByte.ToString("X") if for example 9 should not get 09

そのように、最初に最上位バイトがあります。と

hash11 += curByte.ToString("X2")

先頭に最下位バイトがあります。

于 2012-01-04T08:07:06.227 に答える