数据校验码概述

Posted scaryon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据校验码概述相关的知识,希望对你有一定的参考价值。

[TOC]

奇偶校验码

最简单实用的一种校验数据的方式。在原始数据的后面加一个校验位来实现数据的校对。

若原始数据为:(D=(D_1,D_2...D_n)?)

偶校验:$D_偶 = D_1 igoplus D_2 igoplus...D_n $

奇校验:(D_奇 = overline{ D_1 igoplus D_2 igoplus...D_n })

验算时:

(F = overline{D_1 igoplus D_2 igoplus...D_n igoplus D_奇})

(F = D_1 igoplus D_2 igoplus...D_n igoplus D_偶)

如果 (F) 的值为 0 ,则传输正确,否则错误

奇偶校验码只能检查一位错,并且无法纠错

海明检验码

若一共有 k 个数据位,则需要 r个检验位来完成一位纠错,两位检错。

$ 2^{r-1} geq k + r$

新生成的数据为 k+r位,其中每个校验位放在2的幂次方的位置上

其值为原始数据位在新的排列后,其位次的二进制中有对应位的数的异或和

最后一个校验位的值是前面所有位的异或和,其作用是判断是一位错还是两位错

当接收方接收数据后。先看最后一位,若是1则代表一位错。具体位置由各个位置的海明码组成的二进制表示。

若是0,则若是其他位校验码都是0表示传输正确,否则就是两位错。

CRC循环校验码

前置技能:模2除法

传输前双方约定好一个二进制串,设长度为r,要求最高位和最低位的值必须为1

先将原始数据右移r-1位,低位补0。

然后将这个数除之前的二进制串,得到的余数和之前处理好的数据相加。得到校验码。

PS.这个余数一定是要r-1位的,若不够则高位补0

以上是关于数据校验码概述的主要内容,如果未能解决你的问题,请参考以下文章

[转帖]Oracle数据安全--校验Oracle安装软件的 SHA码 防范注入风险

汉明码是如何校验的,比如一道题:设数据为01101001,试采用4个校验位求其偶校验方式的汉明码

校验码(海明码)

常用校验码(奇偶校验,海明校验,CRC)学习总结

常用校验码及示例

Hamming校验码