在不同的机器上运行时,SHA256Managed Class会返回不同的结果吗?

时间:2012-02-23 16:14:35

标签: c# .net hash cryptography

我正在尝试使用API​​密钥构建一个身份验证机制来进行访问。

作为防止中继攻击的预防措施,我使用当前的DateTime对API密钥进行哈希处理并检查服务器端。

使用相同的代码在客户端和服务器上进行哈希,我从两个调用中得到不同的结果。

I.E:客户端哈希其API密钥并将哈希密钥和日期时间“salt”发送到服务器。

服务器获取预期的api密钥,并使用客户端发送的日期时间进行哈希处理。

我的哈希从不匹配(客户端哈希!=服务器哈希)。

这只发生在我在单独的机器上运行客户端和服务器时(实际上另一个开发人员正在尝试编写客户端部分)

当我在本地计算机上测试(运行客户端和服务器部分以及尝试身份验证)时,一切正常。

问题 给定相同的输入,.NET SHA256Managed类ComputeHash方法在不同的计算机上运行时会返回不同的结果吗?

3 个答案:

答案 0 :(得分:5)

  

鉴于相同的输入,.NET SHA256Managed类ComputeHash方法在不同的计算机上运行时会返回不同的结果吗?

没有。如果它确实比实现被破坏(不太可能),或者输入不同。

答案 1 :(得分:1)

如果您使用string,请小心,因为不同计算机之间的编码,当前文化......可能会有所不同,这会给您不同的结果(因为输入在字节方面不同)。

答案 2 :(得分:1)

哈希值应始终相同。您的问题可能是因为您使用日期的字符串表示形式作为salt,并且由于区域设置,每台计算机上的字符串表示形式不同。