为什么 OpenSSL 会在我的终端中返回不同的 SHA1 哈希输出?



我正在尝试使用 SHA1 对一个相当小的值进行哈希处理,以进行大学练习。

我正在运行OpenSSL 1.1.1 11 Sep 2018。操作系统是 Ubuntu 18.04.1,通过 Linux 1 的 Windows 子系统运行。

运行以下任何一项;

echo "361448504617" | openssl dgst -SHA1
echo 361448504617 | openssl dgst -SHA1
openssl dgst -sha1 hash.txt
openssl SHA1 hash.txt

返回:

(stdin)= f98a0e600cd960f6c414343748a8dabc5ae9ec0a
(stdin)= f98a0e600cd960f6c414343748a8dabc5ae9ec0a
SHA1(hash.txt)= f98a0e600cd960f6c414343748a8dabc5ae9ec0a
SHA1(hash.txt)= f98a0e600cd960f6c414343748a8dabc5ae9ec0a

如果我转到在线 SHA1 哈希生成器,例如 https://passwordsgenerator.net/sha1-hash-generator/,它会返回:

A599EBBA6735313C848118F6EDB63012163D7581

这也是工作表的答案,也是实验室讲师终端返回的内容。

任何人都可以帮我解决这个问题吗?

Annnd,我想通了。

OpenSSL也在散列换行符,使用-n参数进行echo很容易解决。

echo -n 361448504617 | openssl SHA1

此外,当 OpenSSL 从文件读取时,我遇到了同样的错误,因为 vim 使用行尾字符保存。通过在 vim 中运行以下命令来修复:

:set binary 
:set noeol 
:wq

最新更新