“.sha256”文件格式是否在某处正式定义?应如何解析它?

“.sha256”文件格式是否在某处正式定义?应如何解析它?

我看到很多 FOSS 项目都有“.sha256”文件。它们看起来像这样:

dsdfdfdsffdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffgfkgdfgg     *meow.exe
Asdfdfdsffdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffgfkgdfg3     cool_stuff.exe
dsdfdfdsfDdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffg3kgdfgg     even_more_stuff.exe

我目前用以下方法得到这些:

#^([A-Za-z0-9]{64})\s+(\S+)$#um

这将匹配dsdfdfdsffdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffgfkgdfgg*meow.exe等。以星号开头的文件名(我无数次试图查找这个却不知道这意味着什么)会被剥离其开头的*

除此之外还有什么?如果文件名中有空格而不是下划线,会发生什么?那么我的正则表达式就会失效。它们可以加引号吗?如果可以,是使用 Linux(单引号)还是 Windows 样式(双引号)引用?

这种看似简单的文件格式实际上有无数与之相关的问题,但我没有看到它在任何地方被定义。到目前为止,我还没有遇到过使用空格或任何类型的引号的文件名。但它们确实使用星号,这显然也可以出现在结尾文件名...

应该如何解析这种疯狂,才不会有一天爆发?

答案1

文件.sha256是程序生成的文本文件sha256sum。文件的目的.sha256是使人们能够使用sha256sum程序检查文件的完整性。其内容不应由人类手动解释。sha256sum的手册页指的是https://www.gnu.org/software/coreutils/sha256sum这又指的是https://www.gnu.org/software/coreutils/manual/html_node/md5sum-invocation.html

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

并进一步:

‘-c’ --check’

从每个文件(如果未指定文件,则从 stdin 读取)读取文件名和校验和信息(不是数据),并报告校验和是否与指定文件的内容匹配。此模式的输入md5sum通常是先前生成校验和的运行的输出md5sum。支持三种输入格式。上面描述的默认输出格式、输出格式或 BSD 反转模式格式,该格式类似于默认模式,但不使用字符来区分二进制和文本模式。不支持启用的--tag输出。--zero--check

相关内容