【问题标题】:md5sum validation for a file文件的 md5sum 验证
【发布时间】:2015-09-13 00:37:29
【问题描述】:

我有两个文件 hello.txthello.txt.md5

MD5 输出格式如下

cat hello.txt.md5 
b1946ac92492d2347c6235b4d2611184

我编写了一个简单的脚本来验证 md5sum。

csum=$(cat hello.txt.md5)
echo "$csum hello.txt" | md5sum -c

此脚本在 Ubuntu 13.10 上运行良好,但在 Ubuntu 12.04 中引发以下错误。

md5sum:标准输入:未找到格式正确的 MD5 校验和行

谁能告诉我如何在 Ubuntu12.04 中做到这一点。

【问题讨论】:

  • md5sum有哪些版本?我敢打赌文件格式已经改变了
  • md5sum -c 的输入应该和输出一样。那么md5sum hello.txt 在 12.04 上的输出是什么样的?

标签: bash ubuntu-12.04 ubuntu-13.10


【解决方案1】:

至少在我生成的 md5sum 文件中,校验和和文件名之间有 两个 空格。测试了您的脚本,但它不起作用,在 $csum 和 hello.txt 之间添加了空格,它确实起作用了。

【讨论】:

  • 是的,它现在可以为我工作了,你说得对,如果它适用于 Ubuntu 12.04,它应该有两个空格
【解决方案2】:

原因很可能是md5sum 版本之间的一些变化。

对两个版本都进行md5sum <file1> <file2> 应该会给您一个示例,说明每个版本所期望的格式。

具体来说,md5sum man page 说:

默认模式是打印带有校验和的行、指示类型的字符('*' 表示二进制,'' 表示文本)和每个 FILE 的名称。

因此,为了在文本模式下进行检查,通常应该存在 两个 空格(实际上,使用md5sum -t t.txt 进行检查可以确认这一点)。我想新版本已经取消了这个要求。

确实,here's a GNU coreutils commit 标题为 “md5sum:处理 BSD 反转格式校验和”,日期为 2011 年 9 月 16 日。它使md5sum 在两种格式之间进行猜测。
提交是 released in coreutils 8.14 而 Ubuntu 12.04 uses 8.13

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多