原创 常用的数据校验方法

2009-10-21 09:40 11468 8 9 分类: MCU/ 嵌入式
1.什么是数据校验
通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。

2.最简单的检验
实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。

适用范围:简单的数据量极小的通讯。

应用例子:龙珠cpu在线调试工具bbug.exe。它和龙珠cpu间通讯时,bbug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。

3.奇偶校验Parity Check
实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。

应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。


4.bcc异或校验法(block check character)
实现方法:很多基于串口的通讯都用这种既简单又相当准确的方法。它就是把所有数据都和一个指定的初始值(通常是0)异或一次,最后的结果就是校验值,通常
把她附在通讯数据的最后一起发送出去。接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验值一致就说明收到的数据是完整的。
校验值计算的代码类似于:
unsigned uCRC=0;//校验初始值
for(int i=0;i<DataLenth;i++) uCRC^=Data;

适用范围:适用于大多数要求不高的数据通讯。

应用例子:ic卡接口通讯、很多单片机系统的串口通讯都使用。

5.crc循环冗余校验(Cyclic Redundancy Check)
实现方法:这是利用除法及余数的原理来进行错误检测的.将接收到的码组进行除法运算
,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错。crc校验
具还有自动纠错能力。
crc检验主要有计算法和查表法两种方法,网上很多实现代码。 

适用范围:CRC-12码通常用来传送6-bit字符串;CRC-16及CRC-CCITT码则用是来传送
8-bit字符。CRC-32:硬盘数据,网络传输等

应用例子:rar,以太网卡芯片、MPEG解码芯片中



6.md5校验和数字签名
实现方法:主要有md5和des算法。

适用范围:数据比较大或要求比较高的场合。如md5用于大量数据、文件校验,des用于保
密数据的校验(数字签名)等等。

应用例子:文件校验、银行系统的交易数据



文章评论1条评论)

登录后参与讨论

用户1285535 2011-6-22 10:13

正在研究一串数据用的是什么校验方法,看了你的文章,试了试BCC,还真是,多谢多谢~~~
相关推荐阅读
用户1591794 2015-01-27 12:49
GPRS流量计算方法(TCP/IP)
 流量统计方法: 一、登陆网络,建立TCP链路 PPP握手阶段大约要来回12~16个PPP握手包,每个包为30字节。30*16=480字节。 TCP连接阶段:40×3=120字节 注册:...
用户1591794 2014-07-18 09:27
Warning[Pa082]:undefined behavior:
IAR编译的时候,出现警告如下: Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in...
用户1591794 2014-03-21 10:28
Eclipse AVR Windows8.1 Error
...
用户1591794 2013-08-08 09:13
STM32如何进入sleep模式
  STM32如何进入sleep模式 网上说STM32 STOP模式和Standby模式的不少,却很少有人说怎么操作Sleep模式,东西不多,加一个函数而已,废话不多,下面就给出添加的函数...
用户1591794 2013-08-07 06:50
STM32 BOOT0连接不当造成死机
  STM32的三种启动方式依靠BOOT0和BOOT1两个引脚的电平来决定,ST官方推荐的是串联10k电阻然后在接高电平或接地。 理论上这两个引脚只是在启动的时候用来选择启动方式,启动结束...
用户1591794 2013-04-20 21:52
STM32L BOR 应用
BOR功能 是STM32L系列特有的复位和启动电压调整功能。 BOR 关闭时STM32L的供电范围是1.65 V to 3.6 V, BOR 关闭时STM32L的供电范围是1.8 V to...
我要评论
1
8
关闭 站长推荐上一条 /2 下一条