从Linux命令行生成sha256

时间:2010-07-28 23:41:06

标签: linux shell sha256

我知道字符串“foobar”使用生成SHA 256哈希c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2 http://hash.online-convert.com/sha256-generator

然而命令行shell:

hendry@x201 ~$ echo foobar | sha256sum 
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f  -

生成不同的哈希。我错过了什么?

7 个答案:

答案 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=