DebianでSHA256チェックサムの `sha256sum`による検証が失敗し、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

これはわかりません。Debianのシェルスクリプトでチェックサムを確実に検証するにはどうすればよいですか?


Ubuntu 14.04の場合:

⟫ sha256sum --version
sha256sum (GNU coreutils) 8.21

Wheezyの場合:

$ sha256sum --version
sha256sum (GNU coreutils) 8.13

両方のOSのマンページには次のように書かれています。

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

(2つのスペース)。そのように使用する場合echo、単語の間にスペースが1つだけあります。

バージョン8.13では、出力の正確な形式が必要です。以下を使用する場合:

echo "$SUM  $FILE" | sha256sum -c

(もう一度、2つのスペース)動作するはずです。新しいバージョンでは、スペースの数は考慮されないため、それらのスペースでも機能します。


18
トリビアを追加:2番目のスペース文字には実際には意味があります。これは、チェックサムがテキストモードで計算されたことを示します。対照的*に、ファイル名の前にあるa はバイナリモードを示しますsha256sum -t /dev/null(テキストモード、デフォルト)の出力をsha256sum -b /dev/null(バイナリモード)と比較します。これは、明らかにUnix / Linuxでは違いはありませんが、Windowsでは違います
ドゥブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.