生成 md5 时的尾随空格

Ale*_*cek 4 hashsum openssl

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

当我尝试从字符串生成 md5 时,要么使用

echo -n "string" | md5sum | cut -f1 -d' '
Run Code Online (Sandbox Code Playgroud)


或与

echo -n "string" | openssl md5
Run Code Online (Sandbox Code Playgroud)


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


所以,我有几个问题:

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


谢谢大家。

slm*_*slm 5

这是32个字符!的md5sum是增加一个换行到最后。你可以像这样摆脱它:

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

或者你可以这样做:

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

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

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