1、中华人民共和子工业推荐性据处Data processing Check character systems 。引言检验字符系统需要标准化是由于考虑如下因素JJr诀立的z5J/Z 9092 87 150 7064 1985 。.现有100多个校诠字符系统在使用,许多的系统都具有相似的特性,而其悴多的变化又不会带来任何实际好处pb. 现有的系统儿乎没有得到数学上的验证J而且有许多严重缺陷,4. 系统的多变性削弱了生成或验证校验字符的产品的经济利益,而且常常妨碍交换数据的校验。因此p选择套小型兼容性系统,以适应各种应用的需要。该系统业经验证,在各种应用的限制之内,能够对典型(JJ录制和按键的差错提供
2、高质量保护。如按IS02108、1SO2984、ISO6166规定的,现有的校验字符系统,只适用于特殊场合。因而,现有的系统无论如何不磁获得本标准所规定的差错检测率。当为特殊的应用选寇某战验字符系统是按本标准作出规寇时,附录A则概括了应该考虑的一些准则。附录B表示,如何编制未来兼容的另外国家字母表的校验字符系统,该字母表具有不同于本标准所采用的、用于设计本战J位中的校验字符系统的26个字母数量的字母。1 适用指1.1 本标准规寇了一套技验字符系统,该系统能防止字符串在人们拷贝或键人数据时所产生的差错。字符串可以;是固定长度或可变长度,而且可以有字符集,它们是s。.数字(10个数字zO9)zb.
3、 字母(26个字母zAZ Ec. 字母数字字母和数字。插入的问i铺及特殊字符均不考虑u1.2 本标准对采用本标准给寇的系统生成的并被称作产品的校验字符或投验串,规寇了一敖性要求。1.3 这些校验字符系统能检测. 全部单个置换差错(单个字符置换了另一个字符,如1234置换为42 3 4) b. 企部或几乎金部单个换位差错两单字符的换位,既可是邻近的,也可是它们之间具有一个字符的换位,如12 3 45换成了1235 4或12543).一十一中华人自共和国电子工业部198711 27批滋 1 SJjZ 9092 87 一哩困霉航事位一一一C. 全部或几乎全部移位差错(整个字符串向左移或向在移,)例1
4、 I 2 I 3 t古.= 移成11I 2 I 3 I d. )JJZ.置换差错的大部分(同一字符申中两个独立的单个置换差错,例如1234 5 6 7换成7234587);。.全部其它差错的大I=tl/J。1.4 本标准不包括的系统是特指za. 既允许差错检测,又允许自动改正,u. 检测故意误用FC. 校验机器之间单独交换的字符串。1.5 本标准适用于组织之间的信息交换p亦可作为内部信息系统的特别推荐的用法。第一篇总则2 定义2.1 检验字符2可通过该字符串的数学关系来检验该字符串精度的种附加的字符。2.2 校验字符系统,生成校验字符及校验含有该校验字报串的一组规则。2.3 附加字符、附加拉验
5、字符=不属于被保护串的字符集的投挠字符。2.4 模z一个整数,它用作整数除法中的除数$以便获得个整数余数。2.5 同余s陆的倍数彼此不相同的组整数的特性n问余用符号E表示9例如39-6 (模为11)表示39和6是与模11有关的同余数,即39-6 = 33,它是11的2.6 基数t儿司级数的底。3 系统类型本标准规寇了两种系统类型sQ. 纯系统,b. 混合系统。3. 1 纯系统纯系统如表1所示,并按第二篇规定。它盯对整个计算阶段来说每个都使用一个授。3.2 混合系统混合系统如表2所示,并按第三篇规定。i昆合系统在计算中每个都使用两个模。其中个模等于、另个模大于被保护串字符集中的字符数。这些混合系
6、统在被保护串的字符集内总是提供一个校验字符。 2 SJ/Z 9092 87 表1纯系统应用2) 校验字符系统名你校E金字符的类型和号S1/29092. MODll-2 数字串1 数字或补充字符XSJ/29092. MOD37-2 字母数字串1 数字、字母或补充字符并S1/29092. MOD97-10 数字串2数字S1/29092. MOD661-26 字母串2 字母S1/29092. MOD1271-3G 字母数字$2 数字或字母注1 )在名称中紧跟MOD的第一个数字为摸,第二个数字为基数.2)前两个系统可以在被保护串的字符集之外产生一个附加校验字符即SJ/29092.MOD 11-2校验字
7、符是O9加上-个号,而5J/29092.MOD 37-2校验字符是O9加上-个舟号).当不采纳补充校验字符,而要求单个校验字符时,就可能免于戈布生成补充字符的那些串.如果既不容忍补充校验字符,又不能避免生成校验字符的串,则应替换使用混合系统.表2棍合系统 :;. 校验字符系统名称51/2 9092 , MOD 11. 10 5J/2 9092. MOD 27. 26 SJ/2 9C92. MOD 37. 36 注I1)各称中紧跟MOD的两个数字为两个模.4 符合性及名称4.1 &1 应用数字串字母哥王字母数字串字符类型及号1 数字1 字母1 数字或字母本标准中为有关应用规定的一个系统所保护的串
8、,应符合本标准。4.2 校验字符生成的产品4.2.1 按本标准无需判定而生成的校验字符称作产品可以是硬件或软件),它能生成本标准中全部系统用的校验字符。4.2.2 对于不能生成本标准中全部系统用的校验字符的产品,其说明书中应指出产品包括哪些系统,例如5J/29092的MOD11-2一一生成校验字符。4.3 校验产品4.3.1 按本标准选行判定正在校验的串称作产品(可以是软件或硬件),它能使用 3 SJ/Z 9092 87 =-. z 本标准中的全部系统。4.3.2 对于只能使用本标准中的某些系统的校验串产品,其说明书中应指出产品包括的那些系统,例如校验串使用5J/29092, MOD 11-2
9、。4.4 系统名称4.4.1 通常应该使用表1及表2规定的各个系统的主称,例如5J/29092, MODll-2。4.4.2 当有特殊需要使其简化,例如,当有必要将该系统用于保护数据元的指示与被发送的数据元同时出现时,就可以使用如下单个数字名称z5 校验字符系统5J/2 9092. MOD 11-2 SJ/2 9 92. MOD 37-2 SJ/2 9092. MOD 97-1) SJ/2 9092. MOD 661-26 5J/2 9)92. MOD 1271-36 SJ/2 9092. MOD 11. 10 SJ/2 9J92. MOD 27. 26 5J/2 9)92. MOD 37.
10、36 无校验字符非标准系统注I.MODl1.的缩写形式可能会与采用modulus11.相似系统相混.二篇纯系统5.1 公式当下式成立时-,字符串满足校验z 4 n 1: (ai Xr i-l (i-l) ) =- 1 (modM) 名称1 2 3 4 5 6 7 s 。一SJ/Z 9092 87 一_=-. 一式中In是串中的字符数量,包括校验字符多数)J i是从右边开始的字符位置的下标即对于最右的字符i= 1) ,不考虑问隔及分隔符,ai是按表3规定的i位置上的字符值,r是基数几何级数的底)J M是模。5.2 t 满足上述公式的各种计算方法都可采用。5.3 校验字符位置校验字符应设置在串的。
11、表8赋予字符的值数字扇系字母串系字符统中的值统中的位。1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 5J/Z &92 10 MODll-2 补充字符XA 。B 1 C 2 D 3 E 4 字母数字帘系统中的值。2 3 4 5 6 7 8 9 一一10 1 1 12 13 14 5 SJ/Z 9092 87 续表8数字串系字母串系字母数字串系字符统中的徨统中的值统中的值F 5 15 G 6 16 日7 11 8 18 J 9 19 K 10 20 L 1 1 21 M 12 22 N 13 23 。14 24 P 15 25 Q 16 26 R 17 27 S 18 2
12、8 T 19 29 U 20 30 V 21 31 w 22 32 x 23 33 Y 24 34 Z 25 35 SJ/Z 9092 MOD37-2 36 补充字符食 6 SJ/Z 9092 87 6个校验字符的纯系统方法此处的纯系统有两种基本的计算方法。这就是纯系统选归法及纯系统多项式怯。两者都能得到同样的结果。6.1 纯系统递归法6.1.1 t 在递归法中,串是通过从左至右逐个字符加以处理。以F标j=1n的其中n为串的字符数(包括校验字符), 而j=1时定义Pj= 0,计51 = Pl + a 1234 。+0=00+7=7 14+ 9 =23 46+4=50 OX2=0 7 X 2 =
13、 14 23X 2 =46 50X2=100 5 I 100 +校验字符值与1同余(模11)最终乘积P(j + 1) 在此是1000100加上校验字符值是与1同余(模11)。由于100与1同余(模11),所以校验字符值必须为零,而整个保护串为07940,校验字符被附加在串的右咽。 7 5J/Z 9092一-87一一一为了校验该串,上述的步骤j= 1 .-_ 5可按此计算,而在校验字符但0包括在计算之中。如果结果是与1同余(模11),则该串可作为有效接受。6.2 多项式方法6.2.1 纯系统的多项式法是通过串中各个字符以r(i-l)(模M)自乘值来计算。表4列出了用于全部纯系统的前面的15个r(
14、i一1)(模M)的倍。通过加权算其自乘字符值,并加上乘积。如果这些乘积之和为与1同余模M), 那么,包括有校验字符的申就为有效。表4纯系统加权位置下标15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 一-一SJ/Z 9092. MODII-2 5 8 4 2 6 3 7 9 10 5 8 4 2 SJ/2 9092. MOD37-2 30 15 26 13 25 31 34 17 27 23 16 8 4 2 SJIZ 9092. MOD97-10 53 15 50 5 49 34 81 76 26 90 9 30 3 10 SJ/2 9092 .MOD661-26 12
15、9 488 273 341 547 199 389 498 70 562 225 390 15 26 1 SJIZ 9092 .MODI271-36 769 904 590 87 532 156 428 718 373 893 625 900 25 36 1 6.2.2 举例采用G.1.2中举例079自1用的相同串的多项式方法对生成的校验字符计算为z字符位置:5432:1 加权值2(i-l)(模11): 5 8 42: 1 字符直ai: o 7 9 4: 积2o 56 36 8: 积之和z0+ 56+ 36+ 8 = 100 注2如果在任何阶段乘积(P(j + 1 )或总和Sj大于模M.那么模
16、的倍数就可去除,主主余数可以进一步用作计算.在上述的计算中gP3=14 而可以是14-11=3 S3=23 而可以是23-22=1 P =46 而可以是46-44=2 在SJ/29092. MOD11一2系统中的有效校验字符值为零至10.如果校Ft字符值为10.它就用字符五表示z如果原始串已经有较短的扇。凹,那么上述步骤3终止时的值为46 46三2(模11)由于2-:-10三1(模11).断以接个的南为O.79X.为了验证其在il13之后的串.我们取46十10=956.它与1同余模11).因此满足校验.注.加权值只表示为前面的15个位置.采用如下公式,该级数可无限扩展zWi=r(i一1)(模M
17、)其中Wi为位置i的加权值. 8 SJ/Z 9092 87 此处的和为100,加上校验字符值,必须是与1同余模11)。由于100与1同余模11),故校验字符值必须为零,而整个被保护串为0.7940,技验字符被附加到串的右端。用这种方法校验该字符串,将每个字符值(但括校验字符值乘以与其位置有关的加权值,得出乘积再求和,用11除,从而获得个整余数。如果该数为1,则校验捕足。字符位置:5 4 3 2 1 加权值2(i-l)(模11)字符值aiz积E乘积之和z58421 o 7 940 o 56 36 8 0 。十56+36+8 +0=100 = 100 1 (模11)因此,i满足校验。注z最右边位置
18、,即加权值rO=1的位置是为校验字符保留的.所以原始的串的最右边位翠不加校验字符是与其r(此处为2)的加权值有关的.7 具有两个校验!j!符纯系统的计算方法7.1计这些系统校验字符的计算,可以先按具有个校验字符的系统中的方始准确地选行,直到最后步为止,然后,为了取出两个字符的值来表示这些校验丰符,在具有除10以外的基数的系统中要求补充一个步骤(对于SJ/Z9092, MOD97-10校验字符系统,见7.4)。这可以通过除以该基数的结果来完成。其整数商就是i=2位置上的校验字符值,而其余践就是i= 1位置上的校验字符,惶。7.2 采用递归怯举例为了计算SJ/Z9092, MOD 1271-3俨系
19、统中串IS079的两个校验字符,应采用递归法及表8列出的字母数字字符值3采取下列4,F 非号!J,ii 乘积推出十下一字符值=申问和r间和基数=乘积采积模1271)推选P.+ E-j十1)= S, J sjxrzp(j+1P (j + 1) 模M)一-一一1 。+18 = 18 18X 36=648 648 2 648十28=676676X 36=24336 187 。,、187+24=211 211 X 36 =7596 1241 4 1241+7=1248 1248X 36=44928 443 5 443+ 9 =452 452 X 36= 16272 1020 6 1020+俨=1020
20、1020X 36=36720 1132 事在i主阶段,由于酒过第一个校验字符占t居民位涅仍然是空的,所以其值为零. 9 SJ/Z 9092 87 步骤7:为了计算校验值,从CM+1)中减去最后的p(j + 1) (模M), !Jllj: 1271 + 1 = 1272 那么,1272-1132= 140 为了获得由140除以基数36的各个字符值,就要产生一个3的商及32的一个整余数。商8是位置(i=别的校验字符值,而整余数32是位置。=1 )的校验字符值。采用表8中的字符值,这些值对应于字符8及W,从而得出整个保护串为150793Wo 为了检验该串,步骤1至5按上表准确进行,步骤6及步骤7按下
21、表选行。_. 6 1020+ 3 =1023 1023X 36=36828 1240 (模1271)7 1240+32=1272 (见注l!P1272 1 (模1272),因此,能满足校验。注z最后字符值恰好是加入的,而和数又不是用基数相乘的.7.3 采用多项式方怯举例以7.2中举例计算两个校验字符用的步骤,用表4中列出的加权值及表8的字符值,采用多项式方法,串15079的计算如下z字符位1: 7 6 5 4 321 力日权Wi:373 893 625 900 25 36 1 字符值aiz 18 28 24 7 9 乘积z6714 25004 15000 6300 225 和数:6714+25
22、004+15000+6300+225=53243=1132 (模1271)因此,应遵照7.2中的步骤7给出150793豆。7.4 5J/2 9092, MOD97-10的简化方怯对于这种系统,可以执行7.2及7.3中规定的方法。然而,因在普通十遏制中数字已经由基数10的罪加权,所以可采用简化方法。在串中补充两个零,与97相除,从98中减去余数。结果中的两个数字就为该校验字符。对于串794)其步骤如下z步骤1:补充两个零去占据校验字符位置:79400. 步骤2:除以97,得出商818及整余数54;3 :确寇校验字符值,按(97十1)- 54 = 44,并将其补充到原始串,得出19444。为了校验
23、该串除以97J如余生先为1,则校验被捕足。第三篇混合系统8 混合系 10 SJ/Z 9092 87 8.1 公式当如下公式成立时,由标准混合公式形成的校验字符组成的字符串应能搞足校验E.(M+an )|M 2lu+1)+a(E-1)|M 2|(M+1)+ +a, )11 1( =1 式中zn为串中的字符数,包括校验字符,i为从右(即对最右端的字符,i=1算起的字的下标,不考虑间隔及分隔符,a为位置i上的字符值,如表8中规定,M及(M+1)为两模,其中M值等于字符集中的字符数(它总是偶数)J /1M为除以M之后的余数,如此数为零,!J!IjM值被置换,I (M + 1)为除以(m+l)之后的余数
24、,在该运算之后,余数决不为零。8.2 检验字符位置检验字符应放置在字符串的。9 的计算方法只有一种基本方法用于生成和校验由混合系统所保护的字符串,这就是混合系统选归法。警告一一类似于纯系统多顶式怯的计算方法,在此情况下不能产生相同的结果,因而不得采用。9.1 混合系统选归法9.1.1 计算在通归怯中,串是从左至右运个字符处理。以下标J=1n)其中n为串的字符数,但括校验字符,且当j=1时,定义Pj= M,则可计鼻25j =Pj I(M+l) +(n-j+l) P(j+l)=5j /l Mx2 式中sM为除人D后的余数,在i主运算之后,该余数决不为零,a (n-j+ 1)为字符扯1.。为了校验,
25、如果5n1 (模M),则认为串正确。当生成一个校验字符肘,al这样选择,使其Pn+al1 (模M)。9.1.2 举例假寇串(0794是由5J/Z9092, MODll, 10系统提供,并带有一个校验字符,使其M= 10, (M + 1) = 11及n掘5(即4个字符加一个校验字符)。那么,计算可得出如下值z 11. SJ/Z 9092 87 步乘飘出+下-个字符值白中间和调整中间和X2=乘积P.+(n-j+1)S uj Sj 1110X2=P(j+l) 1 10十0=10 10X 2 =20 2 9 + 7 = 16 6 X 2 = 12 3 1 + 9 = 10 10X 2嚣204 9+4=
26、13 3X2嚣65 6+该检验字符值与1同余模10)因此,该校验字符值为5,而整个保护串为07945,校验字符附加为校验该串,步骤1至5应如上计算,商投验字符值5应包括在计必须是与1同余模10)。 12 调整乘积推进PO+1) 111 9 1 9 6 串的右边。之内。其结果SJ/Z 9Q92 87 系统选择准则如表5所示,包括2a)被保护串的字符集(2列)J A 应用选参考件的校验字符的字符集(3列)J除了5J/29092) MODn-2及37-2以外的所有系统,校验字符的字符集与被保护串的字符集相同。因为这两个系统既要求补充校验字符,也要求增加串,所以就不应采用补充字符来生产校验字符值5。校
27、验字符(4列)J必须针对通过要求两个校验字符时系统所给予的较高保护利益来权衡,接收带有两个校验字符(在费用及其它的方面来考虑。d)未检测到的差错百分数(5列一一每种类型的差错百分比,各类差错是指那些遗留的未检测到的差错。其差错类型是2换位,1 )单置换一一一单个字符置换为另个s2 )单换位一一单个字符换位,即邻近(d=1)或之间带有一个字符(d=幻的:3 )双置换在同串中两个独立的单个置换差错,4 )移位一一串向左移或右移所示的检测率是只对适当的距离(d10)内移位而言的JJ 5 )其它)一上述未检测到的6 )残留差错(6)司o。残留差错给出了一个典型范围,即100000差错的未检测到的所有类
28、型的差错。较低的数字是对差错类型有利的混合而言的,是种最好的典型情况,而较高的数字是对差错类型不利的混合而言的(例如,上边类型商围平均产生的差错总是检测不。这些数字只有当严格的统计学不适用时才用作指南,而其中值得考虑的偏差在实践中可能会遇到。所给寇的数字是根据如下频度的典型范围而得出z单个置换60.85% 单个换位d= 1 5 . 15 % 单个换位d=212% 双置换5 ,.,15% 移位。.5%其它1 .10% 的差错百分数,反映出独立形式的检验字符系统的性能最好的实施方陆是,组合其它校验,诸如一致性校验,字符类型及串长度的校验,例如,串长度校验将出全部插入及删除的字符。 13 则汇总1
29、2 3 4 5 6 7 校验字符被保护串校验字符校验未检到的差错百分数每100000系统51/Z的字符集的字符集字符差错的备单换位注单置移位双置换其它MOD 数换d=10 残留d= 1 d= 2 11-2 数字数字加补充1 。10 。9. 1 600-2400 不采用生成10的串符.X. 作为校验字符值,就可以避免补充守符11.10 数字数字1 。2.2 11 。10 760-3100 9.3 91-10 数字2 。1 。1 20-250 27.26 字母字母1 。.31 2 , 4 4 。3. 8 250-1100 661-26 字母字母2 。6-30 一。O. 1 。O. 15 31-2
30、字母数字字母数字加1 。2. 7 。2. 7 160一700不采用生成10的当作校验字符值,就补充符#可避免补充字符31.36 字母数字字母数字1 。2. 8 0.16 1. 7 2.8 1211-36 字母数字字母数字2 。O. 04 。O. 08 3一15选系表5、叶h1INom N的电俨,._, 要面zSJjZ 9092 87 附录B其它字母表的校验字符系统参考件本附录表示,未来的系统如何能研制足不是26个字母的另外的国家字母表的下面例子是采用丹麦29个字母的字母表(A,.Z,E、和)。由于却是一个基本数,所以,纯系统可用29作模。它与150系统不同,只有如下方名称:I丹麦IMOD29-2 表8:对字母表系统,增加字符阻EE: 27 0: 28 A, 29 表4对MOD29-2增添加权位置下标15 14 13 12 11 10 9 8 7 丹麦MOD29-228 14 7 18 9 19 24 12 6 6 5 4 3 2 1 3 16 8 4 2 15