一尘不染

MD5哈希在服务器上的计算方式不同

linux

我正在运行一些用C语言编写的代码,该代码从其他人编写的哈希库(md5.c和md5.h)中调用md5哈希功能。我一直看到的奇怪行为是:

散列工作完美=我对一个字符串进行了散列,它得出的确切散列证明了我已将其与其他多个来源一起使用。

  1. 当在我的OSX机器上编译和运行时,散列功能可以完美地工作,并且所计算的散列完全符合应有的方式。

  2. 相同的代码,没有更改在基于Linux的服务器上上载和编译,并且计算出不同的(错误的)哈希。

有谁对这将如何实现有任何见识?在过去的一周中,它一直在疯狂发展,我不明白为什么这是可能的。我也已经在另一台机器上对其进行了测试,编译和执行,并且效果很好。当我将其上传到服务器时,哈希值不再正确。

哈希功能文件可以在以下位置找到:http :
//people.csail.mit.edu/rivest/Md5.c

解决:谢谢大家,这是64位拱门问题。令人烦恼的是,我在调试时考虑了一下……。


阅读 301

收藏
2020-06-07

共1个答案

一尘不染

尝试更换(Md5.c第41行)

typedef unsigned long int UINT4;

通过

typedef uint32_t UINT4;

(如果需要,请包括stdint.h)

在64位计算机上,long int(通常)为64位而不是32位

编辑

我尝试使用64位opteron来解决此问题。

2020-06-07