使用 gpg 格式以编程方式验证校验和

Bra*_*mon 1 bash checksum sha512 apache-kafka

我想以编程方式验证Kafka二进制文件的 sha512 校验和。首先,我下载二进制文件和 sha512 sum 文本文件:

curl -fsSL -O \
    https://ftp.wayne.edu/apache/kafka/2.7.0/kafka_2.13-2.7.0.tgz
curl -fsSL -O \
    https://downloads.apache.org/kafka/2.7.0/kafka_2.13-2.7.0.tgz.sha512
Run Code Online (Sandbox Code Playgroud)

通过手动检查我知道校验和是正确的:

$ cat -ne kafka_2.13-2.7.0.tgz.sha512 
     1  kafka_2.13-2.7.0.tgz: F3DD1FD8 8766D915 0D3D395B 285BFA75 F5B89A83 58223814$
     2                        90C8428E 6E568889 054DDB5F ADA1EB63 613A6441 989151BC$
     3                        7C7D6CDE 16A871C6 674B909C 4EDD4E28$

$ sha512sum kafka_2.13-2.7.0.tgz
f3dd1fd88766d9150d3d395b285bfa75f5b89a835822381490c8428e6e568889054ddb5fada1eb63613a6441989151bc7c7d6cde16a871c6674b909c4edd4e28  kafka_2.13-2.7.0.tgz
Run Code Online (Sandbox Code Playgroud)

但是shasum/sha512sum似乎不喜欢.512进行程序验证的文件格式(0 成功时退出代码,1 失败时退出代码)。

$ cat -ne kafka_2.13-2.7.0.tgz.sha512 
     1  kafka_2.13-2.7.0.tgz: F3DD1FD8 8766D915 0D3D395B 285BFA75 F5B89A83 58223814$
     2                        90C8428E 6E568889 054DDB5F ADA1EB63 613A6441 989151BC$
     3                        7C7D6CDE 16A871C6 674B909C 4EDD4E28$

$ sha512sum kafka_2.13-2.7.0.tgz
f3dd1fd88766d9150d3d395b285bfa75f5b89a835822381490c8428e6e568889054ddb5fada1eb63613a6441989151bc7c7d6cde16a871c6674b909c4edd4e28  kafka_2.13-2.7.0.tgz
Run Code Online (Sandbox Code Playgroud)

我这里有什么问题吗?kafka_2.13-2.7.0.tgz.sha512是非常规格式还是我缺少命令行标志?

小智 5

好像kafka正在使用gpg --print-md sha512 https://github.com/apache/kafka/blob/trunk/release.py#L616

diff届时验证完成

$ gpg --print-md SHA512 kafka_2.13-2.7.0.tgz | diff - kafka_2.13-2.7.0.tgz.sha512
Run Code Online (Sandbox Code Playgroud)

http://people.apache.org/~ke4qqq/ig/sect-source-verify.html