网站大量收购独家精品文档,联系QQ:2885784924

CRC校验实现方法.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CRC校验实现方法

沈阳单片机开发网——帮您精确掌握电子器件的使用细节 CRC 原理 CRC是什么东西呢?你用过RAR和ZIP等压缩软件吗?它们是不是常常会给你一个恼人 的“CRC 校验错误”信息呢?我想你应该明白了吧,CRC 就是块数据的计算值,它的全称是 “Cyclic Redundancy Check”,中文名是“循环冗余码”,“CRC 校验”就是“循环冗余 校验”。 CRC 有什么用呢?它的应用范围很广泛,最常见的就是在网络传输中进行信息的校对。 其实我们大可以把它应用到软件保护中去,因为它的计算是非常非常非常严格的。严格到什 么程度呢?你的程序只要被改动了一个字节(甚至只是大小写的改动),它的值就会跟原来 的不同。所以只要给你的“原”程序计算好 CRC 值,储存在某个地方,然后在程序中随机地 再对文件进行 CRC 校验,接着跟第一次生成并保存好的 CRC值进行比较,如果相等的话就说 明你的程序没有被修改/破解过,如果不等的话,那么很可能你的程序遭到了病毒的感染, 或者被 Cracker用 16 进制工具暴力破解过了。 我们先来看看 CRC 的原理。首先看两个式子: 式一:9 / 3 = 3 (余数 = 0) 式二:(9 + 2 ) / 3 = 3 (余数 = 2) 在小学里我们就知道,除法运算就是将被减数重复地减去除数 X 次,然后留下余数。所以上 面的两个式子可以用二进制计算为:(不会二进制计算的可以撤退了) 式一:1001 - 0011 =0110 对应的十进制等式为:9-3=6; 0110 - 0011 =0011 对应的十进制等式为:6-3=3; 0011 – 0011 =0000 对应的十进制等式为:3-3=0; 一共减了 3次,所以商是 3,而最后一次减出来的结果是 0,所以余数为 0。 式二:1011 - 0011 =1000 对应的十进制等式为:11-3=8; 1000 - 0011 =0101 对应的十进制等式为:8-3=5; 0101 – 0011 =0010 对应的十进制等式为:5-3=2; 一共减了 3次,所以商是 3,而最后一次减出来的结果是 2,所以余数为 2。 二进制减法运算的规则是,如果遇到 0-1 的情况,那么要从高位借 1,就变成了(10+0)-1=1, 这里的 10 是二进制数,相当于十进制的 2。CRC运算有什么不同呢?让我们看下面的例子: 这次用式子 30 / 9,不过请注意最后的余数: 11110 -- 30 1001 - -- 9 1100 -- 12 (很奇怪吧?为什么不是 21 呢?) 1001 - -- 9 101 -- 5,余数 -- the CRC! 这个式子的计算过程是不是很奇怪呢?它不是直接减的,而是用 XOR 的方式来运算(程 序员应该都很熟悉 XOR吧),最后得到一个余数。对啦,这个就是 CRC的运算方法,明白了 吗?CRC 的本质是进行 XOR 运算,运算的过程我们不用管它,因为运算过程对最后的结果没 1 沈阳单片机开发网——帮您精确掌握电子器件的使用细节 有意义;我们真正感兴趣的只是最终得到的余数,这个余数就是 CRC值。 进行一个 CRC 运算我们需要选择一个除数,这个除数我们叫它为“poly”,宽度 W 就是 最高位的位置,所以我刚才举的例子中的除数 9,这个 poly 1001的 W是3,而不是 4,注 意最高位总是 1。(别问为什么,这个是规定) 如果我们想计算一个位串的 CRC 码,我们想确定每一个位都被处理过,因此,我们要在 目标“位串”后面加上 W 个0 位。现在让我们根据 CRC 的规范来改写一下上面的例子: Poly = 1001,宽度 W = 3 位串 Bitstring = 11110 Bitstring + W zeroes = 11110 + 000 = 1001|||| - 1100||| 1001||| - 1010|| 1001|| - 0110| 0000| -

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档