有人可以解释一下 hash.ComputeHash 函数在 C# .Net 中是如何工作的。
我正在尝试在 mac 服务器上的 bash 中模拟 .net hasing 程序的行为,但得到不同的结果!
.Net 代码:
Byte[] z = System.Text.Encoding.UTF8.GetBytes("1B-F5");
string myhash1 = BitConverter.ToString(hash.ComputeHash(z));
string myhash2 = BitConverter.ToString(hash.ComputeHash(hash.ComputeHash(z)));
返回值:
myhash1 = "EF-83-00-69-6F-22-7C-1C-9C-84-C3-66-06-06-A5-12-A0-C7-91-B5"
myhash2 = "D3-5C-95-AD-2D-9E-5A-49-D0-D8-2B-4F-A5-F9-9A-6F-02-EA-8C-83"
问题是我无法在我的 bash 脚本中获得 Second has value(已被双重哈希)。
重击:
echo -n "1B-F5" | openssl sha1
但是给出正确的第一个哈希值(减去“-”字符)
echo -n "1B-F5" | openssl sha1 | openssl sha1
给出完全不同的哈希。我怀疑这是因为 C# 代码正在散列一个字节数组而不是一个字符串。
无论如何我可以在bash中获得相同的输出吗?