有校验和的文件格式吗?

有校验和的文件格式吗?

我想为我的应用程序存储文件的 SHA512 校验和。如何以常见(流行)的方式做到这一点?所以这个校验和也可以被第三方应用程序使用。

答案1

将校验和写为小写十六进制数字,后跟两个空格,然后是文件名,每行一个文件。这是md5sum各种sha*sumCLI 工具使用的格式。

$ sha512sum t.txt
d663b43c84ab4ba20040e568d3cb799512fcc00f1053f96f3079345f680b39429adc92f9c8c45fc9ae6053173ddc5b35ade25ae1d5c91e57b809d0c021d5c891  t.txt

$ sha512sum -c <(sha512sum t.txt)
t.txt: OK

答案2

长话短说

文件格式是用于生成摘要的命令的输出。

$ shasum -a 512 [FILE] > SHA512SUM # create a checksum file (SHA512SUM)
$ shasum -c SHA512SUM              # verify [FILE] from checksum file
[FILE]: OK                         # output

这些其他用于生成校验和文件的简单方法的 Linux 命令

长答案

这取决于shasum您使用的实现查看你的校验和文件。

如果您使用 Perl 实现 ( $ shasum -c [FILE]),那么您可以在手册页中找到答案。看$ man shasum

检查时,输入应该是该程序以前的输出。默认模式是打印一行,其中包含校验和、指示类型的字符(“*”表示二进制、“ ”表示文本、“?”表示可移植、“^”表示位)以及每个文件的名称。

如果您使用的是GNU实现 ( $ sha512sum -c [FILE]) 那么答案可以在他们的下面找到核心工具 文档:

注意:GNU sha 摘要文档参考 md5sum 摘要文档

对于每个文件,“md5sum”默认输出 MD5 校验和、空格、指示二进制或文本输入模式的标志以及文件名。二进制模式用“*”表示,文本模式用“ ”(空格)表示。二进制模式是重要系统上的默认模式,否则文本模式是默认模式。如果文件包含反斜杠或换行符,则该行以反斜杠开头,并且文件名中的每个有问题的字符都用反斜杠转义,使得即使存在任意文件名,输出也不会产生歧义。如果文件被省略或指定为“-”,则读取标准输入。

答案3

我见过的所有 schecksum 文件都只是纯 ASCII 文件,其中仅包含校验和。这样它们就可以很容易地与校验和命令输出进行比较。

好的做法是指示与文件名后缀一起使用的校验和算法,例如.md5.crc

相关内容