GNU 文本实用程序简介----文件摘要和文件识别(6)
时间:2005-02-04 来源:litie123
到目前为止,我们所见的大多数工具都产生如下输出,它们在很大程度上都可以逆转以创建它们原先的形式――或者至少每行输入都直接对输出做出了贡献。GNU 文本实用程序中的许多工具都最适合被称为是产生文件的摘要。特别是,这些实用程序的输出一般要比输入短,并且它们全都忽略输入中的大多数信息(从技术上讲,您可以将它们称作是 单向功能)。
wc
对输入文件所执行的最简单的单向功能是对行、单词和/或字节计数,这就是 wc(word count,单词计数)所做的工作。关于文件有许多有趣的事情,但是它们在不同的文件显然不是唯一的。
cksum 和 sum
实用程序 md5sum 和 sha1sum 在概念上类似于 cksum。顺便说一下,请注意在 BSD 派生的系统中,前一个命令的名称为 md5。然而,md5sum 和 sha1sum 分别产生 128 位和 160 位的校验和,而不是 cksum 的 16 位和 32 位输出。校验和也称为哈希码(hash)。
校验和的长度区别暗示了不同的用途。事实上,比较一个 32 位的哈希值不大可能错误地指出某个文件得到正确的传输而未经更改。但是与预防恶意欺骗者的保护措施相比较,预防意外的保护措施就是一种弱得多的标准。并且 MD5 或 SHA 哈希码是从计算上不可能欺骗的值。像 MD5 或 SHA 这样的加密哈希码的长度对于其强度来说是必要的,但是它们的设计中所考虑的远不只是长度。
设想这样一种场景:有人通过不安全的渠道向您发送了一个文件。为了确保您接收到的是真实数据,而不是某些恶意的替代品,发送者(通过另一个渠道)发布了该文件的一个 MD5 或 SHA 哈希码。攻击者无法使用这个公布的 MD5/SHA 哈希值来创建一个伪造文件――校验和从实用的目的出发唯一地识别预期的正确文件。虽然 sha1sum 从加密上说更好一点,但是由于历史原因,md5sum 使用得更为广泛。