ทำไมการตรวจสอบ SHA256 checksum ด้วย `sha256sum` จึงล้มเหลวใน Debian และทำงานบน Ubuntu?


34

บน Ubuntu 14.04, sha256sumจากcoreutilsผลงานเป็นที่คาดผม:

echo 879dd0d7637876be4796f7e6f194a111d21088be85cfe717fc97e2e7f05e79d2 /tmp/myfile | sha256sum -c
/tmp/myfile: OK

อย่างไรก็ตามคำสั่งเดียวกันที่แน่นอนพร้อมไฟล์เดียวกันบน Debian Wheezy ล้มเหลว:

sha256sum: standard input: no properly formatted SHA256 checksum lines found

ฉันไม่เข้าใจสิ่งนี้ ฉันจะตรวจสอบการตรวจสอบความน่าเชื่อถือในเชลล์สคริปต์บนเดเบียนได้อย่างไร


บน Ubuntu 14.04:

⟫ sha256sum --version
sha256sum (GNU coreutils) 8.21

บน Wheezy:

$ sha256sum --version
sha256sum (GNU coreutils) 8.13

manpages บนทั้งสองระบบปฏิบัติการพูดว่า:

SYNOPSIS
       sha256sum [OPTION]... [FILE]...

DESCRIPTION
       Print or check SHA256 (256-bit) checksums.  With no FILE,
       or when FILE is -, read standard input.

[...]

       -c, --check
              read SHA256 sums from the FILEs and check them

คำตอบ:


45

มันสนใจเรื่องระยะห่าง หากคุณทำงาน:

sha256sum /dev/null

คุณได้รับ

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /dev/null

(สองช่องว่าง) เมื่อคุณใช้echoเช่นนั้นจะมีช่องว่างระหว่างคำเพียงคำเดียว

เวอร์ชัน 8.13 ต้องการรูปแบบที่แน่นอนว่ามีเอาต์พุตอยู่หากคุณใช้:

echo "$SUM  $FILE" | sha256sum -c

(อีกสองช่องว่าง) ควรใช้งานได้ เวอร์ชันที่ใหม่กว่าไม่สนใจว่าจะมีช่องว่างจำนวนเท่าใดดังนั้นจึงสามารถใช้งานได้กับพื้นที่เหล่านั้น


18
เพิ่มเรื่องไม่สำคัญ: ตัวละครช่องว่างที่สองมีความหมายในความเป็นจริง มันหมายถึงว่าการตรวจสอบได้รับการคำนวณในโหมดข้อความ ในทางตรงกันข้าม*ในด้านหน้าของชื่อไฟล์หมายถึงโหมดไบนารี เปรียบเทียบผลลัพธ์ของsha256sum -t /dev/null(โหมดข้อความค่าเริ่มต้น) กับsha256sum -b /dev/null(โหมดไบนารี) นี้ไม่ได้สร้างความแตกต่างบน Unix / Linux เห็นได้ชัด แต่มันอาจจะบน Windows
Dubu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.