ทำไมฉันถึงได้รับผลลัพธ์ที่แตกต่างจาก shasum ของ Mac มากกว่าเครื่องคำนวณ shasum อื่น


13

ฉันกำลังเข้า:

appletree:~ somename$ shasum -a 512 <<< test

และผลลัพธ์คือ:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

จากนั้นฉันไปที่ตัวสร้างแฮชออนไลน์และป้อน "ทดสอบ" คำตอบของพวกเขาคือ:

http://hashgenerator.de/ :

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

http://passwordsgenerator.net/sha512-hash-generator/ :

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

ดังนั้นผู้สร้างออนไลน์ตกลง ฉันขาดอะไรบ้างในคำสั่งคอนโซล Mac

ฉันกำลังอ่าน man หน้า ฉันเห็นว่ามันถูกใช้งานโดยใช้ห้องสมุด Perl อย่างไรก็ตามฉันคิดว่า sha512 จะเป็นชื่อเฉพาะดังนั้นฉันต้องขุดให้ลึก


ดูเหมือนจะมีคำถามซ้ำกัน: เหตุใดแฮชของบรรทัดคำสั่งของฉันจึงแตกต่างจากผลลัพธ์แฮช MD5 ออนไลน์ . ในขณะที่คำถามอื่นอยู่ในบริบทเดียวกันซึ่งเป็นช่องว่างที่ไม่คาดคิด แต่เกิดขึ้นจากสถานการณ์อื่น

  • <<< คือ นี่สตริง และมี ทางเลือกการออกแบบ สำหรับวิธีเพิ่มสตริงขึ้นบรรทัดใหม่ที่นี่
  • echo 'bla' | หมายถึงไพพ์ซึ่งเรียกใช้เชลล์ย่อยและยังมีอาร์กิวเมนต์สำหรับวิธีจัดการกับบรรทัดใหม่ ที่นี่ดูเหมือนว่าคุณต้องพิจารณา รุ่นเปลือก .

ขอบคุณมากที่ sideshowbarker และ Spiff ช่องว่างเกิดการโจมตีอีกครั้ง ^^ ^^
peter_the_oak


โปรดทราบว่าสตริงที่นี่มีจุดประสงค์เพื่อให้เหมือนกับเอกสารบรรทัดเดียวที่นี่และเอกสารที่นี่จะลงท้ายด้วยบรรทัดใหม่เสมอ
chepner

ฉันไม่ใช่คนใหม่สำหรับเชลล์ แต่นี่คือรายละเอียดและข่าวที่ซับซ้อนซึ่งฉันรู้สึกขอบคุณ ขอบคุณมากสำหรับความคิดเห็นและคำตอบทั้งหมด
peter_the_oak

ดังนั้นเราจึงพบว่าคำสั่ง shasum ของ Mac ไม่แตกต่างกัน ปัญหานี้เกิดจากข้อผิดพลาดทางเทคนิคของผู้ใช้และเกี่ยวข้องกับข้อมูลที่ถูกส่งไม่ใช่โปรแกรม ฉันขอแนะนำให้เปลี่ยนชื่อคำถามเป็น "เพราะเหตุใดฉันจึงได้ผลลัพธ์ที่แตกต่างจาก shasum ของ Mac ... " ด้วยวิธีนี้ผู้คนสามารถสงสัยปัญหาที่ผู้ใช้สร้างขึ้นได้ทันที (ถ้าฉันเห็นว่าฉันอาจจะมีแนวโน้มที่จะตรวจสอบคำถามนี้น้อยลงในขณะนี้ตามที่ชื่อปัจจุบันว่า "อะไรคือสิ่งที่ทำให้ mac shell shasum จากเครื่องคิดเลข shasum อื่น ๆ " ฉันมาที่นี่เพื่อเรียนรู้เกี่ยวกับความแตกต่างเฉพาะของ Mac ซึ่งไม่ใช่สิ่งนี้จริง ๆ แล้วเป็น
TOOGAM

คำตอบ:


32

การป้อนข้อมูลให้กับ shasum การภาวนาในคำถามคือ test\n (ด้วยการขึ้นบรรทัดใหม่) ไม่ใช่ test.

ถ้าคุณให้ test ไม่มี newline ถึง shasum คุณจะได้รับผลลัพธ์เช่นเดียวกับเครื่องมือออนไลน์ที่คุณอ้างถึง:

$ echo -n "test" | shasum -a 512
ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff  -

อย่างไรก็ตามฉันคิดว่าไม่มีอะไรพิเศษหรือ MacOS ที่เฉพาะเจาะจงเกี่ยวกับ shasum พบใน MacOS; ฉันคิด shasum เป็นส่วนหนึ่งของ distro Perl มาตรฐานที่ติดตั้งพร้อมกับเช่น perl คำสั่ง


19

ลองสิ่งนี้:

hexdump -C <<< test

การรู้จักกระสุน Unix คุณอาจได้ 0x0a ที่ไม่พึงประสงค์ในตอนท้ายของสตริง


2
od จะติดฉลากอักขระควบคุมและทำให้ชัดเจนยิ่งขึ้น ลอง: od -t a -t x1 <<< test (ไม่เคยใช้ hexdump จริงๆ)
toddkaufmann
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.