Cần một cli để kiểm tra băm sha256 của một tập tin


127

Để kiểm tra sha1 của một tệp tôi sẽ sử dụng openssl sha1 <file>Tôi không chắc chắn nên sử dụng gì để kiểm tra băm sha256 của tệp, tuy nhiên, bạn muốn giới thiệu gì?

Câu trả lời:


156

Bạn có thể dùng

openssl dgst -sha256 <file>

Đã thử nghiệm trên LibreSSL 2.6.4 trên macOS 10.14 (Mojave).


Trước Mojave bạn có thể sử dụng openssl sha -sha256 <file>hoặc openssl sha256 <file>.

Để kiểm tra các tùy chọn dòng lệnh cho lệnh openssl sha : openssl sha -help.


Đây cũng là thiết bị cầm tay và chạy trên Ubuntu.
Christian Bongiorno

86

OS X xuất xưởng với lệnh shasum .

> which shasum
/usr/bin/shasum

Bạn có thể dùng:

> shasum -a 256 <file>

Thêm chi tiết:

> shasum --help
Usage: shasum [OPTION]... [FILE]...
Print or check SHA checksums.
With no FILE, or when FILE is -, read standard input.

  -a, --algorithm   1 (default), 224, 256, 384, 512, 512224, 512256
  -b, --binary      read in binary mode
  -c, --check       read SHA sums from the FILEs and check them
  -t, --text        read in text mode (default)
  -p, --portable    read in portable mode
                        produces same digest on Windows/Unix/Mac
  -0, --01          read in BITS mode
                        ASCII '0' interpreted as 0-bit,
                        ASCII '1' interpreted as 1-bit,
                        all other characters ignored

The following two options are useful only when verifying checksums:
  -s, --status      don't output anything, status code shows success
  -w, --warn        warn about improperly formatted checksum lines

  -h, --help        display this help and exit
  -v, --version     output version information and exit

When verifying SHA-512/224 or SHA-512/256 checksums, indicate the
algorithm explicitly using the -a option, e.g.

  shasum -a 512224 -c checksumfile

The sums are computed as described in FIPS-180-4.  When checking, the
input should be a former output of this program.  The default mode is to
print a line with checksum, a character indicating type (`*' for binary,
` ' for text, `?' for portable, `^' for BITS), and name for each FILE.

Report shasum bugs to mshelor@cpan.org

Hmm tôi dường như không có nó trên osx 10.11.3. which shashumkhông có kết quả gì
erikvold 14/03/2016

3
@erikvold Bạn biết gì không? Tôi cá là tôi đã nhận được với các công cụ Dòng lệnh Xcode. Argh. Tôi thực sự mong muốn Apple sẽ không gây ô nhiễm /usr/binvới những thứ tùy chọn. Tôi sẽ phải xác minh đây là trường hợp sau ngày hôm nay. Sẽ cập nhật câu trả lời nếu nó thực sự đến từ bản cài đặt XCL.
Ian C.

2
shasumtrả về một hàm băm khác với openssl sha -sha256 <file>(hàm sau là hàm băm chính xác). Bất cứ ý tưởng tại sao?
ws6079

@ ws6079 shasumlà tập lệnh perl, sử dụng Digest::SHAđể tính giá trị băm. Đối với cùng một tệp, tôi nhận được cùng một SHA bằng cách sử dụng shasumhoặc opensslcho SHA-256tính toán băm. Xem: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Ian C.

shahsum đang làm việc tuyệt vời cho tôi ngày hôm nay.
nycynik

7

Các shasumtàu lệnh với OSX trong một thời gian bây giờ. Nó sẽ cho kết quả tương tự như openssl sha -sha256khi sử shasumdụng -a 256tùy chọn.


6

Để làm rõ câu trả lời hữu ích của @ John - cho phép bạn so sánh một hàm băm nhất định với tệp của nó trong một lệnh:

Enter shasum -a 256 -c <<<,
theo sau là một khoảng trắng tùy chọn,
theo sau là một dấu tick ( '),
theo sau là hàm băm để so sánh,
theo sau là khoảng trắng,
theo sau là ký tự chế độ, dựa trên cách tạo hàm băm ban đầu:

  • không có gì , nếu hàm băm được tạo có -thoặc không có tùy chọn (chế độ văn bản, là mặc định)

  • dấu hoa thị ( *), nếu hàm băm được tạo bằng -b(chế độ nhị phân)

  • dấu hỏi ( ?), nếu hàm băm được tạo bằng -p(chế độ di động)

  • caret ( ^), nếu hàm băm được tạo bằng -0(chế độ bit)

theo sau là đường dẫn đến tệp,
theo sau là dấu tick đơn ( ').

Giống như phân tích sau, với các dấu phân cách xung quanh các phần băm và filepath và dấu ngoặc vuông xung quanh phần "ký tự chế độ" tùy chọn. ( Không bao gồm các dấu ngoặc hoặc dấu ngoặc trong cuộc sống thực - chúng chỉ ở đây để làm cho các bộ phận dễ nhìn thấy! )

shasum -a 256 -c <<< '(hashToCompare) [mode character](filepath)'

Bị hỏng :

Lệnh shasum thực tế làshasum -a 256 -c

  • -a 256nói shasumđể sử dụng sha256 .

  • -cnói shasumđể "kiểm tra" đầu vào được cung cấp.

Đây <<<là một bộ ký tự đặc biệt Unix / Linux, được gọi là toán tử "chuyển hướng". Đó là cho ăn một cái gì đó vào một lệnh trước. Bằng cách sử dụng nó, chúng tôi nói rằng chúng tôi sẽ cung cấp một chuỗi thông tin cho shasumlệnh sử dụng làm đầu vào.

Chuỗi thông tin đầu vào phải có các dấu mở đơn và đóng, chẳng hạn như 'some string here', hoặc trong trường hợp này, hàm băm, ký tự chế độ và filepath được kiểm tra.

  • Phần băm bên trong chuỗi không cần bất cứ điều gì đặc biệt - nhưng nó phải được theo sau bởi khoảng trắng.

  • Phần ký tự chế độ có thể là không có gì, dấu hoa thị ( *), dấu hỏi ( ?) hoặc dấu mũ ( ^). Điều này cho biết shasumchế độ mà hàm băm được tạo ra. (Lưu ý: hoàn toàn không có ký tự nào, đại diện cho chế độ văn bản, là shasummặc định.)

  • Phần filepath , là đường dẫn thực tế đến tệp cần kiểm tra.


Vì vậy, đây là một ví dụ thực tế kiểm tra một tệp tải xuống MAMP cụ thể dựa trên giá trị SHA-256 có chủ đích của nó . Ký *tự chế độ được yêu cầu để kiểm tra này hoạt động:

shasum -a 256 -c <<< 'f05ede012b8a5d0e7c9cf17fee0fa1eb5cd8131f3c703ed14ea347f25be11a28 *MAMP_MAMP_PRO_5.2.pkg'

Lưu ý: kết quả của lệnh này (đối với tệp ví dụ của tôi) là -

ĐỒNG Ý:

MAMP_MAMP_PRO_5.2.pkg: OK

hoặc là

THẤT ​​BẠI:

MAMP_MAMP_PRO_5.2.pkg: FAILED
shasum: CẢNH BÁO: 1 tổng kiểm tra tính toán KHÔNG khớp


Đối với tôi, nó hoạt động mà không có dấu hoa thị trước tên tệp (cũng như với dấu hoa thị).
Peter W

shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'trả về thông báo *sample.txt: FAILED open or read. Nếu không có dấu hoa thị , sample.txt: OK. Tôi chưa thể tìm thấy cơ sở sử dụng dấu hoa thị ở nơi nào khác. Bạn có thể làm rõ?
SoFarther

Có phải sự hiện diện của dấu hoa thị cho thấy tổng kiểm tra được sử dụng làm đầu vào trong ví dụ đã được tạo ở chế độ nhị phân (có --binarytùy chọn) không? Từ trang man: "Khi kiểm tra, đầu vào phải là đầu ra cũ của chương trình này. Chế độ mặc định là in một dòng với tổng kiểm tra, một loại ký tự ( *cho nhị phân,` `cho văn bản, Ucho UNIVERSAL, ^cho BITS, ?cho di động) và tên cho mỗi TẬP TIN. " Vì vậy, các ký tự giữa tổng kiểm tra và tên tệp phụ thuộc vào chế độ được đặt khi tổng kiểm tra được tạo?
SoFarther

@SoFarther: vâng, bạn đúng. Sau một số thử nghiệm để chứng minh ý tưởng đó, tôi đã cập nhật bài viết của mình để làm rõ khía cạnh "chế độ".
leanne

6

Tôi sẽ sử dụng lệnh này.

shasum -a 256 -c <<<'_paste hash to compare here_ *_path to file goes here_'

Thí dụ:

shasum -a 256 -c <<< '0d2ea6de4f2cbd960abb6a6e020bf6637423c07242512596691960fcfae67206 */Users/USERNAME/Downloads/someprogram.dmg'
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.