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

Iag*_* B. 6 regex parsing hashing parser sha-2

我看到一堆有“.sha256”文件的 FOSS 项目。它们看起来像这样:

dsdfdfdsffdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffgfkgdfgg     *meow.exe
Asdfdfdsffdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffgfkgdfg3     cool_stuff.exe
dsdfdfdsfDdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffg3kgdfgg     even_more_stuff.exe
Run Code Online (Sandbox Code Playgroud)

我目前通过以下方式得到这些:

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

这将匹配dsdfdfdsffdfsdfdsfdsfdsfdsfdsfds23r2ewrefdefdsfdsgfdsgffgfkgdfgg*meow.exe等。神秘地以星号开头的文件名(我无数次试图查找它,但不知道这意味着什么)被剥夺了它们的开头*

还有比这更重要的事情吗?如果文件名中包含空格而不是下划线,会发生什么情况?然后我的正则表达式崩溃了。可以引用它们吗?如果是,是使用 Linux(单引号)还是 Windows 风格(双引号)引用?

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

应该如何解析这种疯狂,以免有一天崩溃?

dir*_*rdi 6

文件.sha256是由程序生成的文本文件sha256sum。文件的目的.sha256是使人们能够使用程序检查文件的完整性sha256sum。它的内容不应该由人类手动解释。sha256sum\ 的手册页引用了https://www.gnu.org/software/coreutils/sha256sum,而https://www.gnu.org/software/coreutils/manual/html_node/md5sum-inspiration.html :

\n
\n

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

\n
\n

并进一步:

\n
\n

\xe2\x80\x98-c\xe2\x80\x99\n--check\xe2\x80\x99

\n

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

\n
\n