如何将C#散列字节数组转换为字符串以传递给API?

时间:2012-01-06 23:54:35

标签: c# hash

我有许多值必须组合成一个SHA256哈希才能传递给Web服务。使用Encoding.ASCII.GetBytes(allparametershere)将这些值组合成一个字节数组,然后通过myHashMethod.ComputeHash(allParameterByteArray)散列到SHA256。由于我必须将此值添加到请求标头,因此必须将其作为字符串传递给请求标头。

第三方系统的要求表明它必须是字符串的64字符十六进制格式。我以前使用过Convert.Base64String,但我认为这不是他们想要的,因为我只是在传递这样的字符串时会出错。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:11)

这将以大写十六进制的形式给出结果,将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字节。