如果这个问题已经得到回答,或者答案比我意识到的更简单,我深表歉意,但我似乎无法弄清楚以下内容:
当我尝试从字符串生成 md5 时,可以使用
echo -n "string" | md5sum | cut -f1 -d' '
或与
echo -n "string" | openssl md5
结果不是我所期望的 32 个字符,而是 33 个(使用wc -c
)。
所以,我有几个问题:
- 为什么 md5sum 和 openssl 都添加尾部空格?
- 是否有另一种方法可以生成没有尾随换行符或空格的 md5 哈希值?
- 尾随空格真的很重要吗?
谢谢大家。
答案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 %]