【问题标题】:Equivalent of md5 hashing in linux commandslinux命令中md5哈希的等价物
【发布时间】:2013-05-03 00:22:48
【问题描述】:

我在 C 中有以下代码

u_char buf[64] = "hahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaha";
//Make MD5 hash over buffer
MD5_Init(&ctx);
MD5_Update(&ctx, buf, sizeof(buf));
MD5_Final(buf, &ctx);

MD5_InitMD5_UpdateMD5_Final 来自 openssl 库。

上面的代码在缓冲区buf上做一个MD5散列。

我想用 linux 命令用md5sum做同样的事情

$echo -n "hahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaha" | md5sum

但我没有得到相同的结果

linux命令中md5哈希的等价物是什么?

【问题讨论】:

  • openssl 实现返回的哈希值是多少?
  • 抱歉,我在 linux 示例中没有使用相同的字符串长度,我使用字符串长度 32 而不是 64。我得到了相同的结果

标签: c linux hash openssl md5


【解决方案1】:

其实md5sum是等价的。

echo 打印出一个换行符。试试echo -n hahaha.... | md5sum

【讨论】:

  • 事实上我的测试是用 -n 我更新了我的问题对不起错字
  • 抱歉,我在 linux 示例中没有使用相同的字符串长度,我使用字符串长度 32 而不是 64。我得到了相同的结果
【解决方案2】:

执行 'echo -n' 而不是 'echo',echo 会附加一个换行符,所以你实际上是在散列 'hahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaha\n'

【讨论】:

  • 事实上我的测试是用 -n 我更新了我的问题对不起错字
  • 你是在什么系统上运行的?根据手册页,在非 GNU 系统上,您需要执行 md5sum -b 才能使用二进制模式,这很可能是 C 正在做的事情。
  • 抱歉,我在 linux 示例中没有使用相同的字符串长度,我使用字符串长度 32 而不是 64。我得到了相同的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
  • 2011-12-08
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 2019-07-19
相关资源
最近更新 更多