当在不同的机器上运行时,SHA256托管类会返回不同的结果吗

本文关键字:返回 结果 机器 运行时 SHA256 | 更新日期: 2023-09-27 18:25:30

我正在尝试使用API密钥来构建一种身份验证机制。

为了防止中继攻击,我使用当前DateTime对API密钥进行哈希,并在服务器端进行检查。

使用相同的代码在客户端和服务器上进行散列,我从两个调用中的每一个都得到了不同的结果。

I.E:客户端对其API密钥进行散列,并将散列后的密钥和日期时间"salt"发送到服务器。

服务器获取所需的api密钥,并与客户端发送的日期时间进行散列。

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

只有当我在不同的机器上运行客户端和服务器时才会发生这种情况(实际上另一个开发人员正在尝试编写客户端部分)

当我在本地机器上测试时,一切都很好(同时运行客户端和服务器部分并尝试身份验证)。

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

当在不同的机器上运行时,SHA256托管类会返回不同的结果吗

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

没有。如果是这样,那么实现就被破坏了(不太可能),或者输入不同。

如果使用string,请小心,因为编码、当前区域性。。。不同的计算机之间可能不同,这将给您不同的结果(因为输入按字节不同)。

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