我知道字符串“ foobar”使用以下命令生成SHA-256哈希c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
http://hash.online-convert.com/sha256-generator
但是命令行shell:
hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f -
生成另一个哈希。我想念什么?
echo
通常会输出换行符,并用-n
禁止换行。试试这个:
echo -n foobar | sha256sum
如果已安装openssl
,则可以使用:
echo -n "foobar" | openssl dgst -sha256
对于其他算法,您可以将-sha256
替换为-md4
,-md5
,-ripemd160
,-sha
,-sha1
,-sha224
,-sha384
,-sha512
或-whirlpool
。
如果命令sha256sum不可用(例如,在Mac OS X v10.9(小牛)上,则可以使用:
echo -n "foobar" | shasum -a 256
[echo -n
有效,并且由于大量的历史使用而不太可能消失,但是,对于the POSIX standard的最新版本,“鼓励使用新的兼容应用程序printf
”。]]
printf
产生一个尾随换行符,该字符也被散列。试试:
我相信/bin/echo -n foobar | sha256sum
输出尾随换行符。尝试使用echo
作为参数来回显以跳过换行符。