2010-07-28 240 views
143

我知道字符串 「foobar的」 一個SHA256生成使用 http://hash.online-convert.com/sha256-generator生成從Linux命令行

然而命令行殼的SHA 256散列c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2

[email protected] ~$ echo foobar | sha256sum 
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f - 

生成一個不同的散列。我錯過了什麼?

+2

'sha256sum koppor 2016-12-17 20:10:29

+3

@koppor' mvds 2017-02-16 15:07:49

回答

210

echo通常會輸出換行符,該換行符被-n抑制。試試這個:

echo -n foobar | sha256sum 
+0

這個命令'sha256sum'與Solaris中的digest命令相同嗎? – user3153014 2014-05-09 07:22:24

+0

似乎是這樣,http://www.opensolarisforum.org/man/man1/digest.html,'digest -a sha256'應該這樣做。 – mvds 2014-05-09 07:46:24

+39

注意:在OS X(BSD)上,它是'echo -n foobar | shasum -a 256' – Olie 2014-10-16 15:26:31

7

我認爲echo輸出一個尾隨換行符。嘗試使用-n作爲參數來回顯以跳過換行符。

7

echo會生成一個尾隨的換行符,它也會被哈希。嘗試:

/bin/echo -n foobar | sha256sum 
25

echo -n作品,也不可能永遠消失,由於大量的歷史使用情況,但是每最新版本的the POSIX standard,新遵從的應用程序被「鼓勵使用printf」。

35

如果命令sha256sum不可用(對小牛爲例),你可以使用:

echo -n "foobar" | shasum -a 256

+0

不錯!我已經將這添加到我的.bash_profile 函數sha256(){echo -n「$ *」| shasum -a 256} 並且調用方式如下:〜$ sha256 foobar – rbento 2017-02-15 05:52:56

+0

與接受的答案不同,這適用於MacOS – weefwefwqg3 2017-09-17 04:18:46

49

如果您已經安裝openssl,你可以使用:

echo -n "foobar" | openssl dgst -sha256 

對於其他您可以用-md4-md5-ripemd160,-sha,-sha1,替換,-sha384-sha512-whirlpool

+0

有沒有方法可以指定sha512中需要的回合數?我看了一下,找不到它,並想知道你是否會知道? – f1lt3r 2017-06-08 23:57:14

+1

@AlistairMacDonald - 我不知道你在找什麼。AFAIK,SHA512需要80輪;如果你想操縱這個功能,它將不再是sha512。順便說一句,你可以在[crypto.stackexchange.com](https://crypto.stackexchange.com/「Cryptography Stack Exchange」)中搜索/詢問你的問題。 – Farahmand 2017-06-09 12:27:30

+1

與接受的答案不同,這適用於MacOS。 – weefwefwqg3 2017-09-17 04:18:22