Mengapa memverifikasi SHA256 checksum dengan `sha256sum` gagal pada Debian dan bekerja di Ubuntu?


34

Di Ubuntu 14.04, sha256sumdari coreutilspekerjaan seperti yang saya harapkan:

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

Namun, perintah yang sama persis dengan file yang sama persis pada Debian Wheezy gagal:

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

Saya tidak mengerti ini. Bagaimana saya bisa memverifikasi checksum dengan andal dalam skrip shell di Debian?


Di Ubuntu 14.04:

⟫ sha256sum --version
sha256sum (GNU coreutils) 8.21

Di Wheezy:

$ sha256sum --version
sha256sum (GNU coreutils) 8.13

halaman manual di kedua OS mengatakan:

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

Jawaban:


45

Itu peduli tentang jarak. Jika Anda menjalankan:

sha256sum /dev/null

Anda mendapatkan

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /dev/null

(dua spasi). Ketika Anda menggunakan echoseperti itu, hanya ada satu ruang di antara kata-kata.

Versi 8.13 ingin format yang tepat untuk outputnya. Jika Anda menggunakan:

echo "$SUM  $FILE" | sha256sum -c

(Sekali lagi, dua spasi) itu harus berfungsi. Versi yang lebih baru tidak peduli berapa banyak ruang yang tersedia, jadi itu akan bekerja dengan mereka juga.


18
Menambahkan trivia: Karakter ruang kedua sebenarnya memiliki makna. Ini menunjukkan bahwa checksum telah dihitung dalam mode teks . Sebaliknya, a *di depan nama file menunjukkan mode biner . Bandingkan output dari sha256sum -t /dev/null(mode teks, default) dengan sha256sum -b /dev/null(mode biner). Tampaknya ini tidak membuat perbedaan di Unix / Linux, tetapi bisa di Windows .
Dubu
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.