You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mbedtls计算MD5哈希值与OpenSSL等工具结果不一致的原因及解决方法

差异原因

你得到的MD5结果和通用工具不一致,核心问题是输入字符串的长度计算错误:

  • C语言中使用unsigned char hash_source[] = "This is a test..";定义字符串数组时,sizeof(hash_source)返回的长度包含了C字符串默认追加的\0空终止符,实际传入哈希计算的输入是17字节,比原始字符串多了末尾的空字符。
  • Node.js的crypto.update、OpenSSL的echo -n逻辑都不会自动在输入末尾加空终止符,计算的是原始16字节的字符串内容,输入内容不同自然得到不同哈希值。
修复方法

只需要将计算输入长度的代码:

size_t hash_source_len = sizeof(hash_source);

替换为:

size_t hash_source_len = strlen((const char*)hash_source);

strlen会统计字符串到\0之前的有效字符长度,不会包含末尾的空终止符,和通用工具的输入逻辑对齐,即可得到一致的MD5结果。


内容的提问来源于stack exchange,提问作者Brainenjii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:15:02