检查字符串是否为xxx-bits散列

时间:2011-01-16 18:05:03

标签: c# encryption hash

如何检查字符串是否被哈希到某个位?我想单元测试我的方法(使用SHA512),我想写一个测试来检查返回的字符串是否是512位散列。

3 个答案:

答案 0 :(得分:2)

您无法确定字符串是否仅使用字符串本身进行加密。可以输入类似于SHA512散列函数结果的数据,但不进行实际散列。

如果您知道它是经过哈希处理并且您想知道是否使用了SHA512,那么您唯一可以验证的是字符串是否为512位长,但是它不会告诉您它是否为SHA512。

答案 1 :(得分:2)

如果它是单向散列(你没有声明它是,但你使用SHA512暗示它),那么它就无法解密。真的,测试它的唯一方法是:

  • 获取已知输入(即已知的明文字符串)。
  • 通过您信任的其他方式计算预期的加密输出应该是什么。
  • 确保您的程序或例程为该字符串生成该输出。

重复各种输入,直到您满意为止。

答案 2 :(得分:1)

请在我之后重复:哈希不是加密。 哈希算法的输入数据丢失,无法恢复。

SHA-512 has an output 512 bits long,所以有人向你展示512位并说它是SHA-512算法的输出可能是正确的。据我所知,SHA算法的输出没有容易识别的模式,所以他们可能只是向你展示512位纯随机噪声。

您能解释为什么要确定用于生成特定哈希的算法吗?