校验码的计算

合集下载

身份证校验码计算公式

身份证校验码计算公式

身份证校验码计算公式校验码是识别一个身份证号码是否真实存在的重要的依据。

那我们要如何通过校验码来判断一个身份证号码是否真实的呢?校验码如何判断身份证号码真伪呢?我们来看看具体计划过程。

第一步:将身份证号码的第1位数字与7相乘;将身份证号码的第2位数字与9相乘;将身份证号码的第3位数字与10相乘;将身份证号码的第4位数字与5相乘;将身份证号码的第5位数字与8相乘;将身份证号码的第6位数字与4相乘;将身份证号码的第7位数字与2相乘;将身份证号码的第8位数字与1相乘;将身份证号码的第9位数字与6相乘;将身份证号码的第10位数字与3相乘;将身份证号码的第11位数字与7相乘;将身份证号码的第12位数字与9相乘;将身份证号码的第13位数字与10相乘;将身份证号码的第14位数字与5相乘;将身份证号码的第15位数字与8相乘;将身份证号码的第16位数字与4相乘;将身份证号码的第17位数字与2相乘。

第二步:将第一步身份证号码1~17位相乘的结果求和,全部加起来。

第三步:用第二步计算出来的结果除以11,这样就会出现余数为0,余数为1,余数为2,余数为3,余数为4,余数为5,余数为6,余数为7,余数为8,余数为9,余数为10共11种可能性。

第四步:如果余数为0,那对应的最后一位身份证的号码为1;如果余数为1,那对应的最后一位身份证的号码为0;如果余数为2,那对应的最后一位身份证的号码为X;如果余数为3,那对应的最后一位身份证的号码为9;如果余数为4,那对应的最后一位身份证的号码为8;如果余数为5,那对应的最后一位身份证的号码为7;如果余数为6,那对应的最后一位身份证的号码为6;如果余数为7,那对应的最后一位身份证的号码为5;如果余数为8,那对应的最后一位身份证的号码为4;如果余数为9,那对应的最后一位身份证的号码为3;如果余数为10,那对应的最后一位身份证的号码为2。

校验码的计算方法

校验码的计算方法

校验码的计算方法
一、校验码的基本概念
校验码作为信息的一部分,用来对数据在传送、存储过程中的完整性进行检查,用于检测出数据正确性,也可用于发现出数据在传输过程中的错误。

它是常用的信息认证技术,其目的是通过用位等方式通过算术或逻辑函数及其他运算,由发送端计算出一个校验码,传输给接收端,由接收端重新计算,与发送端传输的校验码进行比较,从而验证发送和接收的准确性。

二、常用校验码计算方法
1.奇偶校验码:
奇偶校验码是将发送的数据按位进行XOR运算,最终计算出一个校验码。

其计算方法如下:首先令n为要发送的数据的位数,即有n个位,每一位记为d(0),d(1),d(2),……,d(n-1);将它们看成二进制数,将它们相加,即可得出最后的校验码C=
d(0)⊕d(1)⊕d(2)⊕……⊕d(n-1)。

2.CRC校验码:
CRC(全称循环冗余校验码),它是一种比较高效的数据校验技术,其校验效果很好,强度高,可检测出多重错误,用于检测经过网络或外界媒介传输的软件或文件中的错误。

CRC校验码的计算方式如下:首先,将原始数据分成以位为单位的、等长的字节块,每一段连续的字节块称为一个字。

校验码的3种计算方法

校验码的3种计算方法

校验码的3种计算方法
校验码是一种用于检测数据传输或存储过程中是否出现错误的技术。

以下是三种常见的校验码计算方法:
1. 奇偶校验(Parity Check):奇偶校验是一种简单的校验码计算方法,它通过检查数据的奇偶性来判断数据是否正确。

如果数据的位数为奇数,则在末尾添加一个校验位,该位的值为0或1,取决于数据的最后一位是否为0。

如果数据的位数为偶数,则在末尾添加两个校验位,每个校验位的值都为0或1,取决于数据的最后一位是否为0。

2. 循环冗余校验(CRC):循环冗余校验是一种更复杂的校验码计算方法,它使用多项式除法和生成多项式来计算校验码。

生成多项式是一个固定长度的多项式,通常为2的n次方减1,其中n是数据位数的二进制表示中最高位的位置。

在计算校验码时,将数据与生成多项式进行异或运算,然后将结果取反并加到生成多项式的系数中。

最后得到的结果就是校验码。

3. 海明码(Hamming Code):海明码是一种基于循环冗余校验的纠错码,它可以在接收端检测到传输中的错误并进行纠正。

海明码使用多个校验位来表示数据,每个校验位都是一个独立的多项式。

在发送端,将数据和所有校验位一起发送给接收端。

接收端首先计算出所有校验位的值,然后将这些值与接收到的数据进行比较。

如果发现任何一位不匹配,则说明传输中出现了错误,接收端可以使用已知的纠错规则来纠正错误并重新发送正确的数据。

身份证号码最后一位校检码的计算公式

身份证号码最后一位校检码的计算公式

⾝份证号码最后⼀位校检码的计算公式我国现⾏使⽤公民⾝份证号码有两种尊循两个国家标准,〖GB 11643-1989〗和〖GB 11643-1999〗。

〖GB 11643-1989〗中规定的是15位⾝份证号码:排列顺序从左⾄右依次为:六位数字地址码,六位数字出⽣⽇期码,三位数字顺序码,其中出⽣⽇期码不包含世纪数。

〖GB 11643-1999〗中规定的是18位⾝份证号码:公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位数字校验码组成。

排列顺序从左⾄右依次为:六位数字地址码,⼋位数字出⽣⽇期码,三位数字顺序码和⼀位数字校验码。

地址码表⽰编码对象常住户⼝所在县(市、旗、区)的⾏政区划代码。

⽣⽇期码表⽰编码对象出⽣的年、⽉、⽇,其中年份⽤四位数字表⽰,年、⽉、⽇之间不⽤分隔符。

顺序码表⽰同⼀地址码所标识的区域范围内,对同年、⽉、⽇出⽣的⼈员编定的顺序号。

顺序码的奇数分给男性,偶数分给⼥性。

校验码是根据前⾯⼗七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

为什么除11,在于计算校验码时的函数。

请看下边的函数:公式如下:∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 ) (1)"*" 表⽰乘号i--------表⽰⾝份证号码每⼀位的序号,从右⾄左,最左侧为18,最右侧为1。

a[i]-----表⽰⾝份证号码第 i 位上的号码W[i]-----表⽰第 i 位上的权值 W[i] = 2^(i-1) mod 11计算公式 (1) 令结果为 R根据下表找出 R 对应的校验码即为要求⾝份证号码的校验码C。

R 0 1 2 3 4 5 6 7 8 9 10C 1 0 X 9 8 7 6 5 4 3 2由此看出 X 就是 10,罗马数字中的 10 就是X,所以在新标准的⾝份证号码中可能含有⾮数字的字母X。

~(重点看清楚)~ 这个函数展开就是:a[1]*W[1]+a[2]*W[2]+……+a[18]*W[18]=?mod11=“?对11求模”如:22mod11=2 23mod22也是2 33mod11=3就是出于后⾯那个数,只取商不取余数所以从函数和其展开式来看要对11求模,所⼀要除11以下为列⼦:*此函数功能:输⼊的15位或17位或18位的⾝份证号,返回校验后的最后⼀位**-----------------------------FUNCTION sfzjyParameters cIDDO CASECASE LEN(ALLTRIM(cID)) = 15cID = STUFF(ALLTRIM(cID),7,0,"19")CASE LEN(ALLTRIM(cID)) = 18 OR LEN(ALLTRIM(cID)) = 17cID =LEFT(ALLTRIM(cID),17)OTHERWISERETURN .F.ENDCASEIf Len(ALLTRIM(cID))#17Return .f.EndifnSum=Val(SubStr(cID,1,1)) * 7 ;+ Val(SubStr(cID,2,1)) * 9 ;+ Val(SubStr(cID,3,1)) * 10 ;+ Val(SubStr(cID,4,1)) * 5 ;+ Val(SubStr(cID,5,1)) * 8 ;+ Val(SubStr(cID,6,1)) * 4 ;+ Val(SubStr(cID,7,1)) * 2 ;+ Val(SubStr(cID,8,1)) * 1 ;+ Val(SubStr(cID,9,1)) * 6 ;+ Val(SubStr(cID,10,1)) * 3 ;+ Val(SubStr(cID,11,1)) * 7 ;+ Val(SubStr(cID,12,1)) * 9 ;+ Val(SubStr(cID,13,1)) * 10 ;+ Val(SubStr(cID,14,1)) * 5 ;+ Val(SubStr(cID,15,1)) * 8 ;+ Val(SubStr(cID,16,1)) * 4 ;+ Val(SubStr(cID,17,1)) * 2*计算校验位check_number=INT((12-nSum % 11)%11)If check_number=10check_number='X'EndifReturn check_numberEndfunc*-----------------------------**此函数功能:输⼊的15位或18位⾝份证号,返回正确的18位的⾝份证号。

cas编码规则

cas编码规则

cas编码规则
CAS编号(CAS Registry Number或CAS Number),又称CAS登录号或CAS登记号码,是美国的化学文摘服务社(Chemical Abstracts Service,简称CAS)为化学物质创建的唯一数字识别号码。

CAS编号的规则是以一个连字符“-”分为三部分,第一部分有2到7位数字,第二部分有2位数字,第三部分有1位数字作为校验码。

CAS编号以升序排列且没有任何内在含义。

校验码的计算方法如下:CAS顺序号(第一、二部分数字)的最后一位乘以1,最后第二位乘以2,往前依此类推,然后再把所有的乘积相加,再把和除以10,其余数就是第三部分的校验码。

举例来说,水(H2O)的CAS编号前两部分是7732-18,则其校验码=(8×1+1×2+2×3+3×4+7×5+7×6)mod 10=105 mod 10=5。

异构体、酶和混合物中不同的同分异构体分子有不同的CAS编号。

比如右旋葡萄糖的CAS编号是50-99-7,左旋葡萄糖是921-60-8,α右旋葡萄糖(α-D-葡萄糖)是26655-34-5。

偶然也有一类分子用一个CAS号,比如一组乙醇脱氢酶的CAS号都是9031-72-5。

混合物如芥末油的CAS编号是8007-40-7。

以上信息仅供参考,如有需要,建议查阅化学物质数据库或咨询化学领域专业人士。

身份证数字校验码计算公式

身份证数字校验码计算公式

身份证数字校验码计算公式在中国,每个人的身份证号码都是唯一的,其中包括了个人的基本信息和校验码。

校验码是身份证号码中的最后一位数字,它是根据身份证号码的前17位数字计算而得到的。

校验码的存在可以帮助验证身份证号码的有效性,防止错误或伪造的身份证号码的使用。

那么,身份证数字校验码是如何计算的呢?首先,我们需要了解身份证号码的结构。

中国的身份证号码共有18位数字,其中前17位是个人的基本信息,包括地区、出生年月日和顺序码,最后一位是校验码。

校验码的计算是通过对前17位数字进行一系列的运算得到的。

校验码的计算公式如下:1. 将身份证号码的前17位数字分别乘以对应的加权因子,然后将乘积相加。

2. 将上一步得到的结果除以11,得到余数。

3. 根据余数在一个预先设定的对照表中找到对应的校验码。

下面我们来详细解释一下这个计算公式。

首先,加权因子是一个固定的数组,分别为,7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。

这些数字分别对应身份证号码的前17位数字,用来进行加权计算。

接下来,我们将身份证号码的前17位数字分别乘以对应的加权因子,然后将乘积相加。

假设一个身份证号码的前17位数字分别为a1、a2、a3...a17,对应的加权因子分别为w1、w2、w3...w17,那么校验码的计算公式可以表示为:S = a1w1 + a2w2 + a3w3 + ... + a17w17。

其中S表示加权计算的结果。

然后,我们将S除以11,得到余数M。

余数M的取值范围为0到10。

最后,我们根据余数M在一个对照表中找到对应的校验码。

对照表如下:0,1。

1,0。

2,X。

3,9。

4,8。

5,7。

6,6。

7,5。

8,4。

9,3。

10,2。

根据上述对照表,我们可以找到对应余数M的校验码。

通过以上的计算公式,我们可以得到身份证号码的校验码。

这个计算过程可以帮助我们验证身份证号码的有效性,防止错误或伪造的身份证号码的使用。

条形码校验码公式

条形码校验码公式

条形码校验码公式:
1.首先,把条形码从右往左依次编序号为“1,2,3,4……”从序号二开始把所有奇数序号位上的数相加求和,用求出的和乘3,再把所有偶数序号上的数相加求和,用求出的和加上刚才奇数序号上的数的和乘3的积,然后得出和。

再用大于或等于这个和的最小的10的倍数减去这个和,就得出校验码。

举个例子:
此条形码为:977167121601X(X为校验码)。

1.1+6+2+7+1+7=24
2.24×3=72
3.0+1+1+6+7+9=24
4.72+24=96
5.100-96=4
所以最后校验码X=4。

此条形码为9771671216014
十一、商品条码数字的含义
以条形码 6936983800013 为例
此条形码分为4个部分,从左到右分别为:
1-3位:共3位,对应该条码的693,是中国的国家代码之一。

(690--695都是中国的代码,由国际上分配)
4-8位:共5位,对应该条码的69838,代表着生产厂商代码,由厂商申请,国家分配
9-12位:共4位,对应该条码的0001,代表着厂内商品代码,由厂商自行确定
第13位:共1位,对应该条码的3,是校验码,依据一定的算法,由前面12位数字计算而得到。

各种条码的校验码算法(EAN13,COD128,GTIN,UCC等)

各种条码的校验码算法(EAN13,COD128,GTIN,UCC等)

各种条码的校验码算法(EAN13,COD128,GTIN,UCC等)校验码是由编码⽅案决定的,所以在代码中是否使⽤校验码和条码基本⽆关,但商品条码除外。

今天给⼤家介绍⼏种校验码的计算⽅法。

⼀、商品条码:商品条码中需要计算校验码的有:EAN-8(8位),EAN-13(13位),UCC(UPC-A)(12位),GTIN-14(ITF-14)(14位),GLN(13位),SSCC(18位)等。

它们虽然位数不同,但计算校验码的⽅法完全相同。

1、包含校验码的所有数字从右向左编号,分别为1,2,3......18位;2、从第2位开始,所有偶数位的权数为3,从第3位开始,所有奇数位的权数为1;3、将对应位置的代码数字与权数相乘,参见下图(以SSCC的18位数字为例);4、将所有乘积相加求和;(结果为109)5、对第4步的和,求MOD 10运算(将和109除以10,取其余数9);6、如果余数为0,则校验码为0,否则,⽤10减去余数的差即为校验码。

(上例中校验码为1)⼆、⾝份证校验码:⾝份证校验码的计算⽐较复杂⼀些,参见下图:1、⾃右向左为⾝份证号编号1-18;2、确定各位数的权数,权数的计算公式为 2^(i-1) mod 11i—位数如第3位的权数为2^(3-1)=2^2=4, 4除以11,商0余4,则权数为4。

再如第5位的权数为2^(5-1)=2^4=16,16除以11,商1余5,则权数为5。

3、将权数与对应的⾝份证号数字相乘;4、将所有乘积相加求和;(⽰例中的184)5、将第4步的结果除以11,求余数(⽰例中的8)6、从下表的R值中找到第5步的结果,对应的C值即为校验码。

(⽰例中8对应的是4)三、CODE-128码的校验符:CODE-128码的校验符不会出现在数据中,也不⽤读出,这⾥仅介绍⼀下计算⽅法,实际使⽤中都是由条码软件⾃动⽣成的。

由于CODE-128码可以表⽰字母、符号、控制符,⽽这些字符不能直接参与计算,所以要为每个字符分配⼀个码值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

校验码的计算
1、试用几何级数法确定原代码为1684的校验位和新代码。

要求以11为模,以27、9、3、1为权。

解:原代码 1 6 8 4
各乘以权 27 9 3 1
乘积之和 27+54+24+4=109
以11为模除乘积之和109/11=9 (10)
因余数是10,所以校验位按0处理
故校验位为0,新代码为16840
2、用质数法设计代码校验位:原代码共7位,从左到右取权3,5,7,13,17,19,23,以11为模,试求出2690088的校验位?如果让“11”既作模,又作权,会存在什么缺陷(可以举例说明)?解:校验位的计算:
原码: 2 6 9 0 0 8 8
权: 3 5 7 13 17 19 23
乘积: 6 30 63 0 0 152 18
4
435
乘积之
和:
模11结果435/11=39 (6)
校验位: 6
新码:26900886
(2)如果“11”既作模,又作权,那么当该位发生错误时,校验位将无法检测到这位发生错误。

如:不妨将权13改为11(左边第四位权),原代码是2690088,其校验位仍为6,新码是26900886;在输入或传输过程中发生错误:第四位由0变为9(或其它任意数字1-9),即输入“26990886”此时的校检位6将无法检测到已发生的错误!因为2X3+6X5+9X7+9X11+0X17+8X19+8X23=435+9X11=534模11后所得余数仍为6,计算机会认为:“26900886”输成“26990886”没有发生错误!。

相关文档
最新文档