首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么‘`cksum`’跑得比‘md5sum’慢?

为什么‘`cksum`’跑得比‘md5sum’慢?
EN

Unix & Linux用户
提问于 2017-02-10 03:19:19
回答 1查看 1.5K关注 0票数 4

我一直在为虚拟机备份Windows映像,为了验证数据是否正确传输,我一直在使用cksum。出于好奇,我决定比较一下cksummd5sum在相同文件下运行所需的时间。在多次运行每个操作(以确保它与I/O缓存无关)之后,结果是md5sum作为cksum始终占用了大约一半的时间。我有两个问题..。

  1. 为什么md5sumcksum快得多?
  2. 为了查找随机错误,我是否应该选择cksum而不是md5sum

我在运行Arch Linux。

注:这不是一个更好的问题。以前已经讨论过很多次了,我知道md5sum不会被用作加密散列。我特别询问使用md5sum作为查找随机错误的方法。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2017-02-10 09:40:25

这两种哈希算法所执行的计算是不同的,因此它们具有不同的性能特性并不奇怪。在Linux系统上,md5sumcksum通常都是GNU coreutils版本。md5sum使用C库的MD5函数,这些函数经过了很好的优化,每次对块内容进行32位操作(参见md5.cmd5-block.c)。cksum使用它自己的CRC实现,它一次对内容进行一个字节的操作(参见cksum.c)。这可能是md5sum相对于cksum的S速度的一个因素;毫无疑问,还有其他因素。

要确定哪种工具更适合查找随机错误,您需要分析所涉及的算法的数学特性。在一个非常基本的层次上,cksum生成32位哈希,而md5sum生成128位哈希,因此后者应该更好地抵抗意外碰撞(从而更好地检测随机错误,特别是随着翻转位数的增加)。

我看到选择cksum而不是md5sum的唯一原因是前者是由POSIX指定的,所以任何POSIX系统都会有它--如果这是一个因素,那么cksum将更合适。

(关于您对密码散列的评论,cksum根本不是密码散列,所以这个问题是没有意义的。)

票数 7
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/343900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档