2012-01-06 11 views
5

私は、Webサービスに渡すためにSHA256ハッシュに結合する必要があるいくつかの値を持っています。これらの値はEncoding.ASCII.GetBytes(allparametershere)を使用してバイト配列に結合され、次にmyHashMethod.ComputeHash(allParameterByteArray)によってSHA256にハッシュされます。この値をリクエストヘッダーに追加する必要があるため、リクエストヘッダーに文字列として渡す必要があります。APIに渡すためにC#ハッシュされたバイト配列を文字列に変換するには?

サードパーティシステムの要件では、文字列の64文字の16進数形式である必要があります。私は過去にConvert.Base64Stringを使用しましたが、私はそのような文字列を渡すときにエラーが発生するため、探しているものではないと仮定します。何か案は?

ありがとうございます!

答えて

10

これは大文字のHexで結果を返し、Xをxに変更して小文字にします。

SHA256ResultをSHA256ハッシュの結果に変更します。

byte[] SHA256Result; 
StringBuilder stringBuilder = new StringBuilder(); 

foreach(byte b in SHA256Result) 
    stringBuilder.AppendFormat("{0:X2}", b); 

string hashString = stringBuilder.ToString(); 

結果の文字列がhashStringされ、長さ64を持っている必要があり、心のSHA256Resultにむき出しにすると、32バイトです。

+0

代わりに 'StringBuilder'と' AppendFormat() 'を使うべきですか? – Nuffin

+0

よろしくお願いします;)変更 – craig1231

+0

ありがとうございます。それは私のために働いた。これは、7-Zipの結果と正しく比較します。 – FernandoZ

関連する問題