Answers:
OS X附带有shasum命令。
> which shasum
/usr/bin/shasum
您可以使用:
> shasum -a 256 <file>
更多细节:
> 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
什么都不输出
/usr/bin
可选的东西。我将不得不在今天晚些时候验证这种情况。如果确实来自XCL安装,将更新答案。
shasum
返回的哈希值openssl sha -sha256 <file>
与之不同(后者是正确的哈希值)。知道为什么吗?
shasum
是一个perl脚本,用于Digest::SHA
计算哈希值。对于同一个文件,我可以使用shasum
或openssl
进行SHA-256
哈希计算获得完全相同的SHA 。参见:gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
为了阐明@John的有用答案 -它允许您在一个命令中比较给定的哈希值及其文件:
输入shasum -a 256 -c <<<
,
后跟一个可选空格,
然后是一个单勾号('
),
然后是要进行比较的哈希,
然后是一个空格,
然后是一个模式字符,具体取决于初始哈希的生成方式:
无,如果散列是使用-t
或不使用选项创建的(文本模式,这是默认设置)
星号(*
),如果哈希是使用-b
(二进制模式)创建的
问号(?
),如果哈希是使用-p
(便携式模式)创建的
插入符(^
),如果哈希是使用-0
(位模式)创建的
然后是文件的路径,
然后是一个结束的单勾号('
)。
像以下细分一样,在散列和文件路径部分周围划定括号,并在可选的“模式字符”部分周围划括号。(在现实生活中不要包括括号或括号-它们只是在这里使零件易于看清!)
shasum -a 256 -c <<< '(hashToCompare) [mode character](filepath)'
细分:
实际的shasum命令是shasum -a 256 -c
-a 256
告诉shasum
使用sha256。
-c
告诉shasum
您“检查”提供的输入。
的<<<
是Unix / Linux的特殊字符集,称为“重定向”操作符。它用于将某些内容输入到先前的命令中。通过使用它,我们说我们将为shasum
命令提供一串信息以用作输入。
输入信息字符串必须具有开始和结束的单个滴答声,例如'some string here'
,在这种情况下,还包括要检查的哈希,模式字符和文件路径。
字符串中的哈希部分不需要任何特殊内容-但必须在其后跟一个空格。
该模式字符部分可以是什么都没有,一个星号(*
),问号(?
),或脱字符号(^
)。这告诉shasum
生成哈希的方式。(注意:shasum
默认情况下,根本没有字符表示文本模式)。
该文件路径的一部分,要检查该文件的实际路径。
因此,这是一个实际示例,用于检查特定的MAMP下载文件是否符合其声称的SHA-256值。*
要进行此检查,必须使用模式字符:
shasum -a 256 -c <<< 'f05ede012b8a5d0e7c9cf17fee0fa1eb5cd8131f3c703ed14ea347f25be11a28 *MAMP_MAMP_PRO_5.2.pkg'
注意:此命令的结果(对于我的示例文件)为-
好:
MAMP_MAMP_PRO_5.2.pkg:确定
要么
失败:
MAMP_MAMP_PRO_5.2.pkg:失败的
阴影:警告:1个计算的校验和不匹配
shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'
返回消息*sample.txt: FAILED open or read
。没有星号,sample.txt: OK
。我还没有找到其他地方使用星号的基础。你能澄清一下吗?
--binary
选项)生成的?在手册页中:“进行检查时,输入应为该程序的前一个输出。默认模式是打印带有校验和的行,该行指示类型(*
对于二进制,对于文本,U
对于通用,^
对于BITS,?
(用于便携式)和每个文件的名称。” 那么,校验和和文件名之间的字符取决于创建校验和时设置的模式吗?