如何通过checmsum和crc检验文件是否发生损坏

磁盘上的文件可能会由于软件错误或硬件故障而损坏。为了尽早识别这些问题,避免将损坏的数据传播到其他子系统甚至节点,我们可以使用校验和(checksum)以及循环冗余校验(CRC

一些资料中并不区分加密与非加密哈希函数,以及CRC与校验和。它们都是将一大块数据归纳为一个数字,但它们的使用场合、目的和提供的保证是不同的。
校验和是最弱的保证形式,它不能检测多个比特位的损坏。通常,校验和是用XOR结合奇偶校验或求和来计算的[KOOPMAN15]。
CRC可以帮助检测突发错误(比如多个连续比特位的损坏),其通常使用查找表和多项式除法来实现[STONE98]。多位错误的检测至关重要,因为大部分在通信网络和存储设备中发生的故障都是以这种方式呈现的。
[插图]非加密哈希和
在将数据写入磁盘之前,我们计算其校验和并将它与数据一同写入。当读取数据时,我们重新计算校验和并把它与之前写入的校验和进行比较。如果校验和不匹配,我们就知道发生了损坏,因而不应当再使用这些数据。
由于计算整个文件的校验和通常是不切实际的,而且不太可能每次访问文件都读取全部内容,所以校验和通常是针对每个页计算的,并保存在页头部。这样一来,校验和可以更健壮(因为仅针对一小部分数据),而且就算单个页发生损坏,我们也不用丢弃整个文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值