MD5二进制模式和文本模式之间有什么区别?

问题描述 投票:15回答:2

这是我的测试:

...$ md5sum -b roy.html 
f9283ca2833ff7ebb6781ab8d23a21aa *roy.html
...$ md5sum -t roy.html 
f9283ca2833ff7ebb6781ab8d23a21aa  roy.html

这两种模式之间有什么区别吗?

encryption md5 md5sum
2个回答
7
投票
‘-b’‘--binary’

    以二进制模式读取每个输入文件,将其作为二进制文件处理,然后输出一个“ *”标志。这是--text的反函数。在像这样的系统上不区分二进制文件和文本文件的GNU,这选项仅将每个输入模式标记为二进制:MD5校验和为不受影响。在像MS-DOS这样的系统上,该选项是默认选项。区分二进制文件和文本文件,但读取除外标准输入为终端时的标准输入。
  • ‘-t’‘--text’

      以文本模式读取每个输入文件,将其作为文本处理,然后输出一个“”标志。这是--binary的反函数。这个选项是像GNU这样的系统中不区分二进制和文本文件。在其他系统上,它是默认的当标准输入为端子时,读取标准输入。这个模式从不默认使用--tag。

  • 0
    投票
    我发现二进制模式和非二进制模式之间有一些有趣的区别。

    我的用例是,我正在尝试创建256位AES密钥以在AWS S3块存储服务上使用。这些密钥用于支持服务器端加密(SSE)。我花了数小时(几乎几天)试图弄清楚为什么我的代码无法与S3交互,而从未怀疑我的钥匙是问题所在。实际上,生成密钥是

    not问题。我能够很容易地生成二进制密钥和二进制密钥的base64编码版本。

    问题出在

    相当

    使我惊讶。我对md5并不陌生,我已经使用它数十年了。但是事实证明,我根据二进制密钥生成的md5 sum / hash是错误。我的第一个迹象是,它比我在一个工作示例中看到的字符长几个字符。我一直无法创建一个与示例一样短的md5总和,我也不知道为什么会有差异。我发现:

    OSX(bsd)md5没有二进制输入模式的概念。OSX(bsd)md5sum具有用于二进制输入模式的标志,但它不会更改实际输出的哈希,它只会更改与该哈希相关的元数据。

    Alpine Linux md5

    does

    ”具有二进制输入模式的概念。高山Linux md5sum没有二进制输入模式的概念。Debian Linux md5似乎不存在Debian Linux md5sum具有二进制输入模式的标志,但它不会更改实际输出的哈希,它只会更改与该哈希相关的元数据。

    例如,我在运行时得到这些输出:

    OSX:

    openssl rand 32 > key cat key | md5 936e87c3f08e54d036c7a38dc9dbd540 cat key | md5sum 936e87c3f08e54d036c7a38dc9dbd540 - cat key | md5sum -b 936e87c3f08e54d036c7a38dc9dbd540 *-

    高山Linux:

    openssl rand 32 > key cat key | md5 915b2c6c3368c19f96e9a79089389c15 cat key | md5 -b kVssbDNowZ+W6aeQiTicFQ== cat key | md5sum 915b2c6c3368c19f96e9a79089389c15 -

    Debian Linux:

    openssl rand 32 > key cat key | md5sum a44f9c1d1f7a35f2374ad2987296b54b - cat key | md5sum -b a44f9c1d1f7a35f2374ad2987296b54b *-

    [我发现(至少)AWS S3期望的是二进制密钥的md5,该密钥的输出类似于Alpine Linux在以下情况下的输出:

    cat key | md5 -b kVssbDNowZ+W6aeQiTicFQ==

    [我将尝试与Alpine Linux的SörenTempel取得联系,试图找出这些差异的根源。
    © www.soinside.com 2019 - 2024. All rights reserved.