当前位置: 首页 > 面试题库 >

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

洪哲彦
2023-03-14
问题内容

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

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

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

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

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

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

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


问题答案:

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

typedef unsigned long int UINT4;

通过

typedef uint32_t UINT4;

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

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

编辑

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



 类似资料:
  • 问题内容: 我想计算的不是字符串,而是整个数据结构的md5哈希。我了解执行此操作的方法的机制(调度值的类型,规范化字典键顺序和其他随机性,递归为子值等)。但这似乎是一种通常有用的操作,所以令我惊讶的是我需要自己动手操作。 Python中有一些更简单的方法来实现这一目标吗? 更新:建议使用酸洗,这是一个好主意,但是酸洗不能规范化字典的键顺序: 问题答案: bencode对字典进行排序,因此: 印刷品

  • 问题内容: 我对加密/哈希知之甚少。 我必须对加密密钥进行哈希处理。Java中的示例是这样的… 现在,如果我错了,请纠正我,但是上面的代码使用MD5算法对字符串进行了哈希处理。 当我在C#中哈希相同的字符串时,我希望得到相同的结果。 我当前的C#代码看起来像这样… 但是末字节结果不匹配。 Java得到… C#得到… 我需要C#代码才能获得与Java代码相同的结果(不是相反),有什么想法吗? 谢谢。

  • 问题内容: 我不知道如何实现从php到java的这几行。 好吧,我尝试将其转换,但是得到了不同的结果! java中的结果不同于php中的结果。 你能帮我吗??先感谢您 :) 问题答案: 您不能在不将其转换为字符串的情况下直接使用seq20吗?我会这样:

  • 好吧,这里都是我的问题。我正在尝试用MD5哈希加密字符串。下面是我试图哈希的字符串: 以下是预期输出: 下面是我在Android应用程序中得到的信息: 下面是我正在使用的代码: 在Android上运行这段代码时,我得到了上述意想不到的结果,但当我运行这段代码时,就像一个Java程序传递相同的字符串一样,我得到了预期的输出... 究竟是怎么回事?几天来,我一直被这件事难住,在网上搜寻线索。我已经尝试

  • 采用和solidity同样的方式计算给定参数的sha3哈希值,也就是说, 在计算哈希之前,需要首先对参数进行ABI编码,并进行字节紧凑化处理。 调用: web3.utils.soliditySha3(param1 [, param2, ...]) 参数: paramX - Mixed: 任意类型,或是一个具有如下结构的对象:{type: 'uint', value: '123456'} 或 {t