ต้องการ cli เพื่อตรวจสอบแฮช sha256 ของไฟล์


127

ในการตรวจสอบ sha1 ของไฟล์ฉันจะใช้openssl sha1 <file>ฉันไม่แน่ใจว่าจะใช้อะไรเพื่อตรวจสอบแฮช sha256 ของไฟล์อย่างไรก็ตามคุณจะแนะนำอะไร

คำตอบ:


156

คุณสามารถใช้ได้

openssl dgst -sha256 <file>

ทดสอบกับ LibreSSL 2.6.4 บน macOS 10.14 (โมฮาวี)


ก่อนที่จะซ้อมคุณสามารถใช้หรือopenssl sha -sha256 <file>openssl sha256 <file>

ในการตรวจสอบตัวเลือกบรรทัดคำสั่งสำหรับคำสั่ง OpenSSL openssl sha -helpหม่านี้:


นอกจากนี้ยังพกพาได้และทำงานบน Ubuntu
Christian Bongiorno

86

เรือ OS X มีคำสั่ง shasum

> which shasum
/usr/bin/shasum

คุณสามารถใช้ได้:

> shasum -a 256 <file>

รายละเอียดเพิ่มเติม:

> shasum --help
Usage: shasum [OPTION]... [FILE]...
Print or check SHA checksums.
With no FILE, or when FILE is -, read standard input.

  -a, --algorithm   1 (default), 224, 256, 384, 512, 512224, 512256
  -b, --binary      read in binary mode
  -c, --check       read SHA sums from the FILEs and check them
  -t, --text        read in text mode (default)
  -p, --portable    read in portable mode
                        produces same digest on Windows/Unix/Mac
  -0, --01          read in BITS mode
                        ASCII '0' interpreted as 0-bit,
                        ASCII '1' interpreted as 1-bit,
                        all other characters ignored

The following two options are useful only when verifying checksums:
  -s, --status      don't output anything, status code shows success
  -w, --warn        warn about improperly formatted checksum lines

  -h, --help        display this help and exit
  -v, --version     output version information and exit

When verifying SHA-512/224 or SHA-512/256 checksums, indicate the
algorithm explicitly using the -a option, e.g.

  shasum -a 512224 -c checksumfile

The sums are computed as described in FIPS-180-4.  When checking, the
input should be a former output of this program.  The default mode is to
print a line with checksum, a character indicating type (`*' for binary,
` ' for text, `?' for portable, `^' for BITS), and name for each FILE.

Report shasum bugs to mshelor@cpan.org

อืมฉันดูเหมือนว่าจะไม่มีใน osx 10.11.3 which shashumแสดงผลใด ๆ
erikvold

3
@erikvold คุณรู้อะไรไหม ฉันพนันว่าฉันได้รับด้วยเครื่องมือบรรทัดคำสั่ง Xcode โอ๊ะ ฉันหวังว่าแอปเปิ้ลจะไม่ทำให้เกิดมลพิษ/usr/binกับสิ่งที่เป็นตัวเลือก ฉันจะต้องตรวจสอบกรณีนี้ในวันนี้ จะอัปเดตคำตอบหากมาจากการติดตั้ง XCL
Ian C.

2
shasumส่งคืนแฮชที่แตกต่างจากopenssl sha -sha256 <file>(โดยที่หลังเป็นแฮชที่ถูกต้อง) มีความคิดอะไรไหม
ws6079

@ ws6079 shasumเป็นสคริปต์ perl ใช้Digest::SHAในการคำนวณค่าแฮช สำหรับไฟล์เดียวกันที่ฉันได้รับที่แน่นอน SHA เดียวกันโดยใช้อย่างใดอย่างหนึ่งshasumหรือopensslสำหรับSHA-256การคำนวณกัญชา ดู: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Ian C.

วันนี้ shahsum ทำงานได้ดีสำหรับฉัน
nycynik

7

shasumเรือคำสั่งกับ OSX สำหรับขณะนี้ มันจะให้ผลลัพธ์เช่นเดียวกับopenssl sha -sha256เมื่อใช้การshasumใช้-a 256ตัวเลือก


6

ในการชี้แจงคำตอบที่เป็นประโยชน์ของ @ John - ซึ่งช่วยให้คุณสามารถเปรียบเทียบแฮชที่ระบุกับไฟล์ในคำสั่งเดียว:

ใส่shasum -a 256 -c <<<,
ตามด้วยพื้นที่เลือก
ตามด้วยขีดเดียว ( ')
ตามด้วยกัญชาเพื่อเปรียบเทียบ
ตามด้วยช่องว่าง,
ตามด้วยโหมดตัวอักษรขึ้นอยู่กับวิธีการเริ่มต้นกัญชาถูกสร้าง:

  • ไม่มีอะไรเลยถ้าแฮชถูกสร้างโดยมี-tหรือไม่มีตัวเลือก (โหมดข้อความซึ่งเป็นค่าเริ่มต้น)

  • เครื่องหมายดอกจัน ( *) ถ้าแฮชถูกสร้างด้วย-b(โหมดไบนารี)

  • เครื่องหมายคำถาม ( ?) ถ้าแฮชถูกสร้างด้วย-p(โหมดพกพา)

  • caret ( ^) ถ้าแฮชถูกสร้างด้วย-0(โหมดบิต)

ตามด้วยพา ธ ไปยังไฟล์
ตามด้วยเครื่องหมายปิดเดี่ยว ( ')

เช่นรายละเอียดต่อไปนี้ด้วยการกำหนด parens รอบส่วนแฮชและ filepath และวงเล็บเหลี่ยมรอบส่วน "โหมดอักขระ" ที่เป็นตัวเลือก ( อย่ารวม parens หรือ brackets ในชีวิตจริง - พวกเขาอยู่ที่นี่เพื่อทำให้ส่วนต่าง ๆ มองเห็นได้ง่าย! )

shasum -a 256 -c <<< '(hashToCompare) [mode character](filepath)'

พังทลายลง :

คำสั่งshasum ที่แท้จริงคือshasum -a 256 -c

  • -a 256บอกshasumจะใช้SHA256

  • -cบอกshasumให้ "ตรวจสอบ" การป้อนข้อมูลที่ให้ไว้

<<<เป็น Unix / Linux ชุดอักขระพิเศษที่เรียกว่า "การเปลี่ยนเส้นทาง" ผู้ประกอบการ มันใช้สำหรับป้อนบางสิ่งให้เป็นคำสั่งก่อนหน้า โดยการใช้มันเรากำลังบอกว่าเราจะให้สตริงของข้อมูลสำหรับshasumคำสั่งเพื่อใช้เป็นอินพุต

สตริงของข้อมูลอินพุตต้องมีการเปิดและปิดติ๊กเดี่ยวเช่น'some string here'หรือในกรณีนี้แฮ, อักขระโหมดและพา ธ ไฟล์ที่จะตรวจสอบ

  • กัญชาส่วนหนึ่งภายในสตริงไม่จำเป็นต้องมีอะไรเป็นพิเศษ - แต่มันจะต้องตามด้วยช่องว่าง

  • ส่วนของโหมดอักขระสามารถเป็นอะไรก็ได้, เครื่องหมายดอกจัน ( *), เครื่องหมายคำถาม ( ?) หรือคาเร็ต ( ^) สิ่งนี้จะบอกshasumโหมดที่สร้างแฮช (หมายเหตุ: ไม่มีตัวอักษรใด ๆ ซึ่งแสดงถึงโหมดข้อความเป็นshasumค่าเริ่มต้น)

  • filepathส่วนหนึ่งเป็นเส้นทางจริงไปยังไฟล์ที่จะตรวจสอบ


ต่อไปนี้เป็นตัวอย่างในชีวิตจริงที่ตรวจสอบไฟล์ดาวน์โหลด MAMPเฉพาะกับค่าSHA-256 ที่อ้างว่ามี *โหมดตัวอักษรที่ถูกต้องสำหรับการตรวจสอบการทำงาน:

shasum -a 256 -c <<< 'f05ede012b8a5d0e7c9cf17fee0fa1eb5cd8131f3c703ed14ea347f25be11a28 *MAMP_MAMP_PRO_5.2.pkg'

หมายเหตุ:ผลลัพธ์ของคำสั่งนี้ (สำหรับไฟล์ตัวอย่างของฉัน) เป็นอย่างใดอย่างหนึ่ง -

ตกลง:

MAMP_MAMP_PRO_5.2.pkg: ตกลง

หรือ

ล้มเหลว:

MAMP_MAMP_PRO_5.2.pkg:
FAASED shasum: คำเตือน: 1 checksum ที่คำนวณได้ไม่ตรงกัน


สำหรับฉันงานนี้ไม่มีเครื่องหมายดอกจันหน้าชื่อไฟล์ (เช่นเดียวกับเครื่องหมายดอกจัน)
Peter W

shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'*sample.txt: FAILED open or readส่งกลับข้อความ sample.txt: OKโดยไม่ต้องดอกจัน, ฉันยังไม่สามารถค้นหาพื้นฐานของการใช้ดอกจันที่อื่นได้ คุณช่วยอธิบายได้ไหม
SoFarther

การมีอยู่ของเครื่องหมายดอกจันบ่งชี้ว่าการตรวจสอบที่ใช้เป็นอินพุตในตัวอย่างถูกสร้างขึ้นในโหมดไบนารี (พร้อม--binaryตัวเลือก) หรือไม่ จากหน้า man: "เมื่อทำการตรวจสอบ input ควรเป็น output ก่อนหน้าของโปรแกรมนี้โหมดเริ่มต้นคือการพิมพ์บรรทัดที่มี checksum อักขระที่ระบุประเภท ( *สำหรับไบนารี` `สำหรับข้อความUสำหรับ UNIVERSAL ^สำหรับ BITS ?สำหรับพกพา) และชื่อไฟล์แต่ละไฟล์ " ดังนั้นตัวละครระหว่าง checksum และชื่อไฟล์จึงขึ้นอยู่กับโหมดที่ตั้งไว้เมื่อสร้าง checksum?
SoFarther

@ SoFarther: ใช่คุณพูดถูก หลังจากการทดลองเพื่อพิสูจน์ความคิดนั้นฉันได้อัปเดตโพสต์ของฉันเพื่อให้เข้าใจถึง "โหมด"
ลีแอนน์

6

ฉันจะใช้คำสั่งนี้

shasum -a 256 -c <<<'_paste hash to compare here_ *_path to file goes here_'

ตัวอย่าง:

shasum -a 256 -c <<< '0d2ea6de4f2cbd960abb6a6e020bf6637423c07242512596691960fcfae67206 */Users/USERNAME/Downloads/someprogram.dmg'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.