生成md5时尾随空格

生成md5时尾随空格

如果这个问题已经得到回答,或者答案比我意识到的更简单,我深表歉意,但我似乎无法弄清楚以下内容:

当我尝试从字符串生成 md5 时,可以使用

echo -n "string" | md5sum | cut -f1 -d' '


或与

echo -n "string" | openssl md5


结果不是我所期望的 32 个字符,而是 33 个(使用wc -c)。


所以,我有几个问题:

  1. 为什么 md5sum 和 openssl 都添加尾部空格?
  2. 是否有另一种方法可以生成没有尾随换行符或空格的 md5 哈希值?
  3. 尾随空格真的很重要吗?


谢谢大家。

答案1

是32个字符!正在md5sum末尾添加换行符。你可以像这样摆脱它:

% echo -n string | md5sum|awk '{print $1}'|wc -c
33
% echo -n $(echo -n string | md5sum|awk '{print $1}')|wc -c
32

或者你可以这样做:

% echo -n $(md5sum <<< 'string'|awk '{print $1}')|wc -c
32

您可以判断其中一个命令何时添加换行符,因为 32 个字符的字符串将显示在其自己的行上。如果没有换行符,它应该总是显示如下:

[prompt %] echo -n $(md5sum <<< 'string'|awk '{print $1}')
b80fa55b1234f1935cea559d9efbc39a[prompt %]

相关内容