需要cli检查文件的sha256哈希


127

要检查我将使用的文件的sha1,我openssl sha1 <file>不确定该使用什么来检查文件的sha256哈希,但是,您会推荐什么呢?

Answers:


156

您可以使用

openssl dgst -sha256 <file>

在macOS 10.14(Mojave)上的LibreSSL 2.6.4上进行了测试。


在Mojave之前,您可以使用openssl sha -sha256 <file>openssl sha256 <file>

要检查OpenSSL的SHA命令的命令行选项:openssl sha -help


这也是便携式的,可以在ubuntu上运行。
Christian Bongiorno

86

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

嗯,我似乎在osx 10.11.3上没有它。which shashum什么都不输出
erikvold

3
@erikvold你知道吗?我敢打赌我使用Xcode命令行工具。啊 我真的希望Apple不会污染/usr/bin可选的东西。我将不得不在今天晚些时候验证这种情况。如果确实来自XCL安装,将更新答案。
伊恩·C(

2
shasum返回的哈希值openssl sha -sha256 <file>与之不同(后者是正确的哈希值)。知道为什么吗?
ws6079

@ ws6079 shasum是一个perl脚本,用于Digest::SHA计算哈希值。对于同一个文件,我可以使用shasumopenssl进行SHA-256哈希计算获得完全相同的SHA 。参见:gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfd
Ian C.

莎阿苏姆今天对我来说很棒。
nycynik

7

shasum命令随OSX一起提供了一段时间。使用该选项openssl sha -sha256时,其结果将相同。shasum-a 256


6

为了阐明@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个计算的校验和不匹配


对我来说,这可以在文件名之前(以及带有星号的情况下)不使用星号。
Peter W

shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'返回消息*sample.txt: FAILED open or read。没有星号,sample.txt: OK。我还没有找到其他地方使用星号的基础。你能澄清一下吗?
SoFarther

星号的存在是否表示示例中用作输入的校验和是以二进制模式(带有--binary选项)生成的?在手册页中:“进行检查时,输入应为该程序的前一个输出。默认模式是打印带有校验和的行,该行指示类型(*对于二进制,对于文本,U对于通用,^对于BITS,?(用于便携式)和每个文件的名称。” 那么,校验和和文件名之间的字符取决于创建校验和时设置的模式吗?
SoFarther

@SoFarther:是的,你是对的。经过一些实验证明了这一想法之后,我更新了我的文章以阐明“模式”方面。
leanne

6

我会用这个命令。

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

例:

shasum -a 256 -c <<< '0d2ea6de4f2cbd960abb6a6e020bf6637423c07242512596691960fcfae67206 */Users/USERNAME/Downloads/someprogram.dmg'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.