从Linux命令行生成SHA-256哈希

从Linux命令行生成SHA-256哈希,linux,shell,sha256,Linux,Shell,Sha256,我知道字符串“foobar”使用 但是命令行shell: hendry@x201 ~$ echo foobar | sha256sum aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f - 生成不同的哈希。我缺少什么?echo通常会输出一个换行符,该换行符被-n抑制。试试这个: echo -n foobar | sha256sum 我相信,echo会输出一个尾随的换行符。尝试使用-n作为echo参数跳过换行符

我知道字符串“foobar”使用

但是命令行shell:

hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f  -

生成不同的哈希。我缺少什么?

echo
通常会输出一个换行符,该换行符被
-n
抑制。试试这个:

echo -n foobar | sha256sum

我相信,
echo
会输出一个尾随的换行符。尝试使用
-n
作为echo参数跳过换行符。

echo
生成一个尾随的换行符,该字符也经过哈希处理。尝试:

/bin/echo -n foobar | sha256sum 

echo-n
可以正常工作,并且不太可能由于大量的历史使用而消失,但是根据的最新版本,“鼓励使用新的一致性应用程序”。

如果命令sha256sum不可用(例如,在(Mavericks)上),您可以使用:

echo -n "foobar" | openssl dgst -sha256

echo-n“foobar”| shasum-a 256

如果您已经安装了
openssl
,您可以使用:

echo -n "foobar" | openssl dgst -sha256

对于其他算法,您可以将
-sha256
替换为
-md4
-md5
-ripemd160
-sha
-sha1
-sha224
-sha384
-sha512
-whirlpool
,对于base64中的sha256,请使用:

echo-n foo | openssl dgst-binary-sha256 | openssl base64
例子
echo-n foo | openssl dgst-binary-sha256 | openssl base64
C+7Hteo/D9vJXQ3UfzxbwnXaijM=

这个命令
sha256sum
与Solaris中的摘要命令相同吗?注意:在OSX(BSD)上,它是
echo-n foobar | shasum-a 256
在OSX上,创建别名可能很方便:
别名sha256sum='shasum--algorithm 256'
为什么它以*-@PhilipRego结尾?这是stdin上输入的shasum,因此,不会打印文件名
-
sha256sum
。不需要。。。另请参见@koppor
echo foobar
不同。
echo foobar |
的等价物是
sha256sum Nice!我已经将它添加到我的.bash_配置文件函数sha256(){echo-n“$*”| shasum-a256}中,并像这样调用:~$sha256 foobarOr,你是说?(没有“s”,特立独行)。它是在2010年发布的,而Mac OS X v10.9是在这个答案发布前一个月发布的。有没有办法指定您想要在sha512中使用的轮数?我看了看,找不到它,想知道你是否知道?@AlistairMacDonald-我不知道你到底在找什么。好了,SHA512需要80发子弹;如果你想操纵这个函数,它就不再是sha512了。顺便说一句,您可以在中搜索/询问您的问题。@masterxilo谢谢您的帮助,更正了。