Câu trả lời:
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
.
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
which shashum
không có kết quả gì
/usr/bin
vớ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.
shasum
trả 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?
shasum
là 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 shasum
hoặc openssl
cho SHA-256
tính toán băm. Xem: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Để 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ó -t
hoặ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 256
nói shasum
để sử dụng sha256 .
-c
nó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 shasum
lệ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 shasum
chế độ 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à shasum
mặ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
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õ?
--binary
tù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, U
cho 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?