การสร้างแฮช SHA-256 จากบรรทัดคำสั่ง Linux


234

ฉันรู้ว่าสตริง "foobar" สร้างแฮช SHA-256 c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2โดยใช้ http://hash.online-convert.com/sha256-generator

อย่างไรก็ตามเชลล์บรรทัดคำสั่ง:

hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f  -

สร้างแฮชอื่น ฉันพลาดอะไรไป


4
sha256sum < foobar. ไม่จำเป็นต้องใช้cat , echo , printf , ... ดูเพิ่มเติมการใช้ cat ไร้ประโยชน์หรือไม่?
koppor

7
@koppor ไม่ได้เช่นเดียวกับ< foobar echo foobar |เทียบเท่าสำหรับecho foobar |จะเป็นsha256sum <<< foobarแต่ไม่เพิ่มขึ้นบรรทัดใหม่เพื่อ foobar echoเช่นเดียวกับ
mvds

openssl dgst -sha256 foobarใช้ได้กับฉันใน MacOS High Sierra ในขณะที่echo -n foobar | openssl dgst -sha256ให้คำตอบที่ไม่ถูกต้อง
auspicious99

คำตอบ:


362

echo-nจะขึ้นบรรทัดใหม่ส่งออกได้ตามปกติซึ่งถูกระงับด้วย ลองสิ่งนี้:

echo -n foobar | sha256sum

76
หมายเหตุ: ใน OS X (BSD) มันecho -n foobar | shasum -a 256
Olie

6
เพียงใช้printf;)
dylnmc

11
ใน OSX อาจเป็นประโยชน์ในการสร้างนามแฝง:alias sha256sum='shasum --algorithm 256'
Jonathan Cross

1
ทำไมมันถึงลงท้ายด้วย * -
Philip Rego

2
@PhilipRego เป็น shasum ของอินพุตบน stdin ดังนั้นแทนที่จะ-พิมพ์ชื่อไฟล์
mvds

100

หากคุณติดตั้งopensslแล้วคุณสามารถใช้:

echo -n "foobar" | openssl dgst -sha256

สำหรับขั้นตอนวิธีการอื่น ๆ ที่คุณสามารถแทนที่-sha256ด้วย-md4, -md5, -ripemd160, -sha, -sha1, -sha224, -sha384, หรือ-sha512-whirlpool


มีวิธีการระบุจำนวนรอบที่คุณต้องการใน sha512 หรือไม่? ฉันมองและไม่สามารถหามันและสงสัยว่าคุณจะรู้หรือไม่?
f1lt3r

1
@AssairMacDonald - ฉันไม่ทราบว่าคุณกำลังมองหาอะไร AFAIK, SHA512 ต้องการ 80 รอบ; หากคุณต้องการจัดการกับฟังก์ชั่นมันจะไม่เป็น sha512 อีกต่อไป BTW คุณสามารถค้นหา / ถามคำถามของคุณได้ในcrypto.stackexchange.com
Farahmand

3
ต่างจากคำตอบที่ยอมรับได้ซึ่งใช้ได้กับ MacOS
weefwefwqg3

45

หากคำสั่ง sha256sum ไม่พร้อมใช้งาน (บนMac OS X v10.9 (Mavericks) เป็นต้น) คุณสามารถใช้:

echo -n "foobar" | shasum -a 256


1
ดี! ฉันได้เพิ่มสิ่งนี้ลงในฟังก์ชั่น. bash_profile ของฉัน sha256 () {echo -n "$ *" | shasum -a 256} และมีสายเหมือน: ~ $
sha256

แตกต่างจากคำตอบที่ยอมรับนี้ใช้งานได้กับ MacOS
weefwefwqg3

หรือคุณหมายถึงUbuntu 10.10 (ไม่ฝักใฝ่ฝ่ายใด Meerkat) ? (ไม่ 's', ไม่ฝักใฝ่ฝ่ายใด ) เปิดตัวในปี 2010 ในขณะที่ Mac OS X v10.9 วางจำหน่ายหนึ่งเดือนก่อนคำตอบนี้
Peter Mortensen

29

echo -nใช้งานได้และไม่น่าจะหายไปเนื่องจากมีการใช้งานในอดีตจำนวนมากอย่างไรก็ตามตามมาตรฐาน POSIXเวอร์ชันล่าสุดแอปพลิเคชันที่สอดคล้องกันใหม่จะ "สนับสนุนให้ใช้printf"



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.