web-dev-qa-db-ja.com

`sha256sum`によるSHA256チェックサムの検証がDebianでは失敗し、Ubuntuで機能するのはなぜですか?

Ubuntu 14.04では、sha256sum from 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
35
gertvdijk

間隔を気にします。実行すると:

sha256sum /dev/null

あなたは得る

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /dev/null

(2つのスペース)。このようにechoを使用すると、単語の間にスペースが1つだけ入ります。

バージョン8.13では、出力がexact形式になっています。使用する場合:

echo "$SUM  $FILE" | sha256sum -c

(再び、2つのスペース)機能するはずです。新しいバージョンでは、いくつのスペースがあるかは関係ないので、それらでも機能します。

46
Michael Homer