我有以下字符串: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
它看起来一样但不一样。如何获得我想要的输出?
答案 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的答案,了解具体方法。