【问题标题】:.Net SHA256Managed produce non valid hashing.Net SHA256Managed 产生无效散列
【发布时间】:2011-06-17 08:31:39
【问题描述】:

我正在编写一个函数来在文件上生成 SHA256 哈希。 这是我使用的代码

public string ComputeHash(Byte[] inputBytes)
    {
        Byte[] hashedBytes = new SHA256Managed().ComputeHash(inputBytes);
        return BitConverter.ToString(hashedBytes);
    }

非常简单。事实是,根据我尝试过的几个工具,产生的散列似乎无效,实际上,它不同于我见过的任何其他 sha256 字符串(甚至不是 256 字节)。 例如,一个结果是

12-10-B2-60-24-75-11-95-B5-F7-F6-64-39-C3-22-9F-E7-E7-D4-13-69-18-99-C5-A7-C5-EC-2F-E2-D6-09-19

即使我删除了每个 - 字符,所有内容都是大写的,而我总是看到小写表示。 (这也是一个问题吗)我想知道我是否以正确的方式使用图书馆。 请帮忙

【问题讨论】:

  • 改用return string.Concat(hashedBytes.Select(x => x.ToString("x2")));

标签: .net hash cryptography sha256


【解决方案1】:

SHA-256 表示 256 bits,也就是 32 bytes,这就是您所看到的。

小写和大写在这里是无关紧要的——这只是 bytes 作为字符串的表示。字节之间是否有连字符同上。不同的工具产生不同的十六进制字符串表示,仅此而已......所以我希望“1210B2”等同于“12-10-b2”等。

【讨论】:

  • 您是否认为有更好的方法来获取字符串表示,而不是使用 BitConverter.ToString 方法?
  • @themarcuz:这完全取决于您要达到的目标。很好,因为它很容易检查输出,并且由于它们之间的破折号,字节很容易识别。
猜你喜欢
  • 2023-03-23
  • 2011-07-20
  • 2020-03-11
  • 2018-03-09
  • 1970-01-01
  • 2013-02-05
  • 2015-03-20
  • 1970-01-01
  • 2021-05-13
相关资源
最近更新 更多