SHA1编码在C#中无法正常工作

时间:2016-12-16 01:57:53

标签: c#

我有以下字符串:TheString = 12424$456$06$4539527688361959$2017$188.98.78.191$

我想要那个字符串的SHA1哈希,为此我使用以下代码:

string TheSHA1Hash = BitConverter.ToString(new SHA1Managed().ComputeHash(Encoding.UTF8.GetBytes(TheString)));

这是输出:

8F-BA-36-2C-FC-DE-31-B2-AC-66-07-37-2D-80-85-63-5A-33-35-F4

当我转到http://www.sha1-online.com/并散列字符串时,这就是输出,这就是我想要的:

8fba362cfcde31b2ac6607372d8085635a3335f4

它看起来一样但不一样。如何获得我想要的输出?

2 个答案:

答案 0 :(得分:5)

只需删除短划线(使用Replace())并制作小写(使用ToLower())。

string TheSHA1Hash = BitConverter.ToString(new SHA1Managed().ComputeHash(Encoding.UTF8.GetBytes(TheString))).Replace("-","").ToLower();

这里的格式更容易理解:

var hasher = new SHA1Managed();
var hash = hasher.ComputeHash(Encoding.UTF8.GetBytes(TheString));
var byteString = BitConverter.ToString(hash);
var theSHA1Hash = byteString.Replace("-","").ToLower();

另见this answer

答案 1 :(得分:0)

如果您不喜欢BitConverter的输出(包括破折号),您可以滚动自己的数组到十六进制转换器。请参阅this question的答案,了解具体方法。