我知道字符串“foobar”使用生成SHA 256哈希c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
http://hash.online-convert.com/sha256-generator
然而命令行shell:
hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f -
生成不同的哈希。我错过了什么?
答案 0 :(得分:302)
echo
通常会输出换行符,该换行符会被-n
抑制。试试这个:
echo -n foobar | sha256sum
答案 1 :(得分:83)
如果您已安装openssl
,则可以使用:
echo -n "foobar" | openssl dgst -sha256
对于其他算法,您可以将-sha256
替换为-md4
,-md5
,-ripemd160
,-sha
,-sha1
,-sha224
,-sha384
,-sha512
或-whirlpool
。
答案 2 :(得分:39)
如果命令sha256sum不可用(例如在小牛队),你可以使用:
echo -n "foobar" | shasum -a 256
答案 3 :(得分:28)
echo -n
起作用,并且由于大量的历史使用而不太可能消失,但是根据the POSIX standard的最新版本,“鼓励使用printf
”新的符合要求的应用程序。
答案 4 :(得分:7)
我相信echo
输出一个尾随换行符。尝试使用-n
作为参数来回显以跳过换行符。
答案 5 :(得分:7)
echo会生成一个尾随换行符,也会进行哈希处理。尝试:
/bin/echo -n foobar | sha256sum
答案 6 :(得分:1)
对于 base64 中的 sha256 哈希,请使用:
echo -n foo | openssl dgst -binary -sha1 | openssl base64
echo -n foo | openssl dgst -binary -sha1 | openssl base64
C+7Hteo/D9vJXQ3UfzxbwnXaijM=