Tại sao việc xác minh tổng kiểm tra SHA256 với `sha256sum` không thành công trên Debian và hoạt động trên Ubuntu?


34

Trên Ubuntu 14.04, sha256sumtừ coreutilscác tác phẩm như tôi mong đợi:

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

Tuy nhiên, lệnh chính xác tương tự với cùng một tệp trên Debian Wheezy không thành công:

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

Tôi không hiểu điều này. Làm cách nào tôi có thể xác minh tổng kiểm tra một cách đáng tin cậy trong tập lệnh shell trên Debian?


Trên Ubuntu 14.04:

⟫ sha256sum --version
sha256sum (GNU coreutils) 8.21

Trên Wheezy:

$ sha256sum --version
sha256sum (GNU coreutils) 8.13

các trang trên cả hai hệ điều hành đều nói:

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

Câu trả lời:


45

Nó quan tâm đến khoảng cách. Nếu bạn chạy:

sha256sum /dev/null

bạn lấy

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /dev/null

(hai không gian). Khi bạn sử dụng echonhư vậy, chỉ có một khoảng trắng giữa các từ.

Phiên bản 8.13 muốn định dạng chính xác mà đầu ra của nó nằm trong. Nếu bạn sử dụng:

echo "$SUM  $FILE" | sha256sum -c

(một lần nữa, hai không gian) nó sẽ hoạt động. Các phiên bản mới hơn không quan tâm đến việc có bao nhiêu không gian, vì vậy nó cũng sẽ hoạt động với chúng.


18
Thêm câu đố: Nhân vật không gian thứ hai trong thực tế có một ý nghĩa. Nó biểu thị rằng tổng kiểm tra đã được tính toán trong chế độ văn bản . Ngược lại, *phía trước tên tệp biểu thị chế độ nhị phân . So sánh đầu ra của sha256sum -t /dev/null(chế độ văn bản, mặc định) với sha256sum -b /dev/null(chế độ nhị phân). Điều này không tạo ra sự khác biệt trên Unix / Linux, nhưng nó có thể trên Windows .
Dubu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.