校验码算法
⑴ crc校验码计算方法是什么
已知信息位为1100,生成多项式G(x) = x3+x+1,求CRC码。
M(x) = 1100 M(x)*x3 = 1100000 G(x) = 1011
M(x)*x3 / G(x) = 1110 + 010 /1011 R(x) = 010
CRC码为: M(x)*x 3+R(x)=1100000+010 =1100010
其原理是:CRC码一般在k位信息位之后拼接r位校验位生成。编码步骤如下:
(1)将待编码的k位信息表示成多项式 M(x)。
(2)将 M(x)左移 r 位,得到 M(x)*xr 。
(3)用r+1位的生成多项式G(x)去除M(x)*xr 得到余数R(x)。
(4)将M(x)*xr 与R(x)作模2加,得到CRC码。
(1)校验码算法扩展阅读:
CRC校验码计算详解:采用CRC进行差错检验,生成多项式为G(X)=X4+X+1,信息码字为10110,则计算出的CRC校验码是:A. 0000 B. 0100 C. 0010 D.1111
符号表示假定:多项式和多项式的系数排列均用相同的符号表示,如
G(X)= X4+X+1
G(X)=10011
已知条件如下:
原码字记做M(X),即:M(X) = 10110
生成多项式记做G(X),即:G(X) = 10011
G(X)的最高阶数记做r,此处r = 4
⑵ 求校验码算法
提供之资料看看对你有啥帮助
CRC(Cyclic Rendancy Check)循环冗余校验码
是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来‘确认信息’的困惑,书上提到红军和蓝军通信联合进攻山下的敌军的例子,第一天红军发了条信息要蓝军第二天一起进攻,蓝军收到之后,发一条确认信息,但是蓝军担心的是‘确认信息’如果也不可靠而没有成功到达红军那里,那自己不是很危险?于是红军再发一条‘对确认的确认信息’,但同样的问题还是不能解决,红军仍然不敢冒然行动。
对通信的可靠性检查就需要‘校验’,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。
CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。 它的编码规则是:
1、首先将原信息码(kbit)左移r位(k+r=n)
2、运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码。
非常简单,要说明的:模2除就是在除的过程中用模2加,模2加实际上就是我们熟悉的异或运算,就是加法不考虑进位,公式是:
0+0=1+1=0,1+0=0+1=1
即‘异’则真,‘非异’则假。
由此得到定理:a+b+b=a 也就是‘模2减’和‘模2加’直值表完全相同。
有了加减法就可以用来定义模2除法,于是就可以用生成多项式g(x)生成CRC校验码。
例如: g(x)=x4+x3+x2+1,(7,3)码,信息码110产生的CRC码就是:
101
11101 | 110,0000
111 01
1 0100
1 1101
1001
余数是1001,所以CRC码是110,1001
标准的CRC码是,CRC-CCITT和CRC-16,它们的生成多项式是:
CRC-CCITT=x16+x12+x5+1
CRC-16=x16+x15+x2+1
⑶ 奇校验码的运算方法是什么
奇校验码的运算方法是:
发送端只需要对所有消息 位进行异或运算, 得出的值如果是 0, 则校验码为 1, 否则为 0。 接收端可以对消息进行相同计 算, 然后比较校验码。 也可以对消息连同校验码一起计算, 若值是 0 则有差错,否则校验通过。
它们都是发送端对消息按照某种算法计算出校验码, 然后将校验码和消息一起发送到接收端。 接收端对接收到的消息按 照相同算法得出校验码, 再与接收到的校验码比较, 以判断接收到消息是否正确。 奇偶校验只需要 1 位校验码, 其计算方法也很简单。
通常说奇偶校验可以检测出 1 位差错, 实际上它可以检测出任何奇数位差错。 校验和的思想也很简单, 将传输的消息当成 8 位(或 16/32 位)整数的序列, 将这些整数加起来 而得出校验码, 该校验码也叫 校验和。 校验和被用在 IP 协议中, 按照 16 位整数运算, 而且其 MSB(Most Significant Bit)的进位被加到结果中。
⑷ CRC16校验码如何计算
首先G(X)=X3+X+1可以得出G(x)=1011[G(x)中的1就是二进制第0位为1,X就是第一位为1,没有X^2,所以第二位为0,X^3则第三位为1。所以就是1011]
M(x)=0011M(x)*x3=0011000
M(x)*x3/G(x)的余数是101所以R(X)=101
CRC码为:M(x)*x3+R(x)=0011000+010=0011010
在计算机网络通信中
运用CRC校验时相对于其他校验方法就有一定的优势。CRC可以高比例的纠正信息传输过程中的错误,可以在极短的时间内完成数据校验码的计算,并迅速完成纠错过程,通过数据包自动重发的方式使得计算机的通信速度大幅提高,对通信效率和安全提供了保障。由于CRC算法检验的检错能力极强,且检测成本较低,因此在对于编码器和电路的检测中使用较为广泛。
以上内容参考:网络-CRC
⑸ 校验码怎么计算
找到报文整条多条,用常见的xor,奇偶,CRC等都演算一遍比对结果,这是一项需要耐心的工作。。
⑹ 校验码的算法举例
按照中华人民共和国国家标准GB11643-1999规定中华人民共和国公民身份号码校验码的计算方法即为ISO 7064:1983.MOD 11-2校验码计算法。
假设某一17位数字是 17位数字 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 加权因子 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 368
计算17位数字各位数字与对应的加权因子的乘积的和S:1×7+2×9+3×10+4×5+5×8+6×4+7×2+8×1+9×6+0×3+1×7+2×9+3×10+4×5+5×8+6×4+7×2=368; 计算S÷11的余数T:368 mod 11=5; 计算(12-T)÷11的余数R,如果R=10,校验码为字母“X”;如果R≠10,校验码为数字“R”:(12-5)mod 11=7。 该17位数字的校验码就是7,聚合在一为123456789012345677。
加权因子公式为Wi=2^(n-1)(mod 11),n为数字序列从右到左的从1开始的顺序数。
序
ai 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 ?Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成。校验码按下列公式计算: 8 C9=11-MOD(∑Ci×Wi,11) i=1 MOD-表示求余函数;i-表示代码字符从左至右位置序号;
Ci-表示第i位置上的代码字符的值,采用下列“代码字符集”所列字符;
C9-表示校验码;
Wi-表示第i位置上的加权因子,其数值如下表:
加权因子 i 1 2 3 4 5 6 7 8 Wi 3 7 9 10 5 8 4 2 当MOD函数值为1(即C9=10)时,校验码应用大写拉丁字母“X”表示;当MOD函数值为0(即C9=11)时,校验码仍用“0”表示;当C9的值为1至9时,校验码直接用C9的值表示。
⑺ 身份证号最后一位数字称之为校验码,校验码的计算方式是怎样的
按照相关规定,身份号是由17个数字和1个数字校验码组成的。而最后一位校验码,就是检查身份证是否正确的主要依据。它的计算方法,主要是由前17位乘以不同的系数,最后的总和除以11。在这种情况下,得到的余数,就是校验码。
那么我们在反推的时候,就可以用身份证号乘于系数,当最后得出的余数和末尾校验码不同时,就代表这个身份证,是一个假的身份证,不符合我们国家的标准。另外,余数对应的数字不同,并不是说余数就一定是最后一位身份证号码。
3、为什么除以11看到整个计算过程,我们会发现,想要得出校验码,并非一件易事。不过在计算中,有人可能会提出疑问,最终的除以为什么是取11,而不是其他数字。
其实这个问题的答案很简单,结合校验码的功能,11是最容易检测出问题的存在。同时,它可以覆盖到大多数身份证,方便进行校验。毕竟一个国家人口众多,校验码要做到尽可能覆盖所有人。
⑻ 校验码的校验码算法
不同的校验码的算法常常不同。常见的校验码算法有:码距、奇偶检验、海明校验、循环冗余校验等
⑼ 身份证的最后一位的效验码的公式是什么(简单一点的公式)
公民身份号码是由17位数字码和1位校验码组成。排列顺序从左至右分别为:6位地址码,8位出生日期码,3位顺序码和1位校验码。
地址码(身份证地址码对照表见下面附录)和出生日期码很好理解,顺序码表示在同一地址码所标识的区域范围内,对同年同月同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
身份证最后一位校验码算法如下:
1.
将身份证号码前17位数分别乘以不同的系数,从第1位到第17位的系数分别为:7
9
10
5
8
4
2
1
6
3
7
9
10
5
8
4
2
2.
将得到的17个乘积相加。
3.
将相加后的和除以11并得到余数。
4.
余数可能为0
1
2
3
4
5
6
7
8
9
10这些个数字,其对应的身份证最后一位校验码为1
0
X
9
8
7
6
5
4
3
2。
校验码计算公式:
公式①中:
i
表示号码字符从由至左包括校验码在内的位置序号;
Ai
表示第i位置上的号码字符值;
Wi
示第i位置上的加权因数。
加权因数的集合为{7,
9,
10,
5,
8,
4,
2,
1,
6,
3,
7,
9,
10,
5,
8,
4,
2,
1}
v={1,
0,
X,
9,
8,
7,
6,
5,
4,
3,
2}
最后一位的校验位就是集合v中的第m个元素的值。
下面举例算一个:
随便一个号码,如济南市市辖区的某位出生于1901年02月03日的男性公民身份号码前11位(也就是本体码)为37010119010203997,首先按照公式⑴计算:
然后根据计算的结果,从集合v中查出相应的校验码,其中X表示10:
根据集合v,查出计算结果为9的校验码3为所以该人员的公民身份号码应该为
370101190102039973。
说下余数的算法。
一、两个异号整数求余
1.函数值符号规律(余数的符号)
mod(负,正)=正
mod(正,负)=负
结论:两个整数求余时,其值的符号为除数的符号。
2.取值规律
先将两个整数看作是正数,再作除法运算
①能整除时,其值为0
②不能整除时,其值=除数×(整商+1)-被除数
例:mod(36,-10)=-4
即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被除数之差为(40-36=4);取除数的符号。所以值为-4。
二、两个小数求余
取值规律:
被除数-(整商×除数)之后在第一位小数位进行四舍五入。
例:mod(9,1.2)=1
即:9除1.2其整商为7;7与除数1.2之积为8.4;8.4四舍五入之后为8;被除数9与8之差为1。故结果为1。
例:mod(9,2.2)=0
即:9除2.2其整商为4;4与除数2.2这积为8.8;8.8四舍五入之后
为9;被除数9与之差为0,故结果为0.
⑽ 国际条形码最后一位校验位是如何计算出来的
计算:
以条形码 6936983800013为例公式第13位算法:
1、取出该数的奇数位的和,c1=6+3+9+3+0+0=21;
2、取出该数的偶数位的和,c2=9+6+8+8+0+1=32;
3、将奇数位的和与“偶数位的和的三倍”相加。
4、取出结果的个位数:117(117%10=7);
5、用10减去这个个位数:10-7=3;
6、对得到的数再取个位数(对10去余)3%10=3;
此条形码分为4个部分,从左到右分别为:
1、第1-3位:共3位,对应该条码的693,是中国的国家代码之一。(690--695都是中国大陆的代码,由国际上分配)
2、第4-8位:共5位,对应该条码的69838,代表着生产厂商代码,由厂商申请,国家分配
3、第9-12位:共4位,对应该条码的0001,代表着厂内商品代码,由厂商自行确定
4、第13位:共1位,对应该条码的3,是校验码,依据一定的算法,由前面12位数字计算而得到。
(10)校验码算法扩展阅读:
编码规则:
1、唯一性:同种规格同种产品对应同一个产品代码,同种产品不同规格应对应不同的产品代码。根据产品的不同性质,如:重量、包装、规格、气味、颜色、形状等等,赋予不同的商品代码。
2、永久性:产品代码一经分配,就不再更改,并且是终身的。当此种产品不再生产时,其对应的产品代码只能搁置起来,不得重复起用再分配给其它的商品。
无含义:为了保证代码有足够的容量以适应产品频繁的更新换代的需要,最好采用无含义的顺序码。
3、条形码校验码公式:首先,把条形码从右往左依次编序号为“1,2,3,4……”从序号二开始把所有偶数序号位上的数相加求和,用求出的和乘3,再从序号三开始把所有奇数序号上的数相加求和,用求出的和加上刚才偶数序号上的数,然后得出和。再用10减去这个和的个位数,就得出校验码。