如果这已经得到回答,或者如果答案比我意识到的更简单,我深表歉意,但我似乎无法弄清楚以下几点:
当我尝试从字符串生成 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
)。
所以,我有几个问题:
谢谢大家。
这是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)