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

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

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

  1. java csv文件tozip后损坏,方法来尝试修复损坏的ZIP文件轻松

    拉链是用于压缩和存储在计算机上的单个或多个文件的一般文件格式.这些文件是节省硬盘空间非常有用,并如传输,收发电子邮件,存储和下载更简单的任务.但是,类似于任何其它压缩文件格式的ZIP文件也容易在腐败和 ...

  2. java csv文件tozip后损坏_教你修复损坏的gz或tar.gz压缩文件

    原标题:教你修复损坏的gz或tar.gz压缩文件 接修复损坏的gzip压缩文件之原理篇,再次引用GZIP结构图: 在上一篇中已知,修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点. ...

  3. 【Qt】 error: LNK1107: 文件无效或损坏: 无法在 0x310 处读取

    编译Qt程序使用动态库时,报错 error: LNK1107: 文件无效或损坏: 无法在 0x310 处读取 原因 链接时,使用的dll,而不是lib. lib是编译时需要的,dll是运行时需要的. ...

  4. 无法删除文件,文件或目录损坏且无法读取的解决

    今天碰到QQ下的user下的我的QQ文件夹双击打不开而且又删除不掉,删除时提示"无法删除文件,文件或目录损坏且无法读取". 解决: 首先点"开始"菜单或按&qu ...

  5. Visual studio 2010出现“error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”解决方式...

    本来自己的电脑上装了VS2010,因为开发Cocos2d-x 3.x,所以就在自己的机器上装了一个VS2012. 但是.这不装不要紧,debug一下自己原来的程序,结果出现了"error L ...

  6. 转载:vs2010 问题 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    原文链接:http://www.cnblogs.com/newpanderking/articles/3372969.html >LINK : fatal error LNK1123: 转换到 ...

  7. LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    使用vs2010边长时经常遇到LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 问题,一般解决思路就是 [方法一] 解决方法如下: 项目\属性\配置属性\清单工具\输入和输出\嵌入清单: ...

  8. ntoskrnl.exe文件丢失或损坏的解决方法

    ntoskrnl.exe文件丢失或损坏的解决方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:of ...

  9. VS2010 LNK1123:转换到 COFF期间失败:文件无效或损坏”的解决方法

    2019独角兽企业重金招聘Python工程师标准>>> " "LNK1123:转换到 COFF期间失败:文件无效或损坏"的解决方法 一.错误描述 之前写 ...

最新文章

  1. 开源项目托管GitHub简单使用
  2. 【JZOJ3216】【SDOI2013】淘金
  3. mysql 查询语句_MySQL相关(一)- 一条查询语句是如何执行的
  4. SAP Spartacus 如何使用 cypress 进行端到端自动化测试
  5. 企业如何用CRM软件客户管理自动化优化流程?
  6. 微信小程序基础(一)
  7. 创业期的软件开发管理(一)
  8. 1.C#项目Java化注意事项
  9. sql server 2005 链接服务器:未将服务器 配置为用于 RPC
  10. tar和其他一些压缩解压工具
  11. arcgis for android 调用公网天地图注记重影问题
  12. 从零学习node爬虫
  13. gaussian窗口函数_几种常见窗函数及其matlab应用
  14. oracle rfs进程过多,Oracle物理备库RFS进程消失,不能启动--解决
  15. 讯飞智能录音笔SR101:性价比满满的AI好物
  16. SMTP命令与ESMTP命令简介(附带命令通信)
  17. 温暖的光,坚定的飞翔
  18. The request was rejected because the URL contained a potentially malicious String “//“ 报错
  19. Maven-Maven反应堆
  20. python代码流星雨_HTML5梦幻之旅——炫丽的流星雨效果实现过程_html5教程技巧

热门文章

  1. 基于PHP和MySQL的新闻发布系统
  2. 关于外贸的相关知识和经验(下)
  3. behave java_BDD模式-Python behave的简单使用
  4. Deep Freeze
  5. Unity 对GPU的基础性能优化
  6. 《QQ自由幻想》网游打造完美在线,偶有偶风采
  7. @Test not applicable to type junit测试
  8. flarum安装图片幻灯片fancybox插件
  9. php如何加密视频地址,如何加密PHP文件
  10. (附AK代码)第四届“传智杯”全国大学生IT技能大赛(决赛B组)题解