智能卡的CRC校验和
发布时间:2008/11/22 0:00:00 访问次数:1325
循环冗余校验法crc((jyclic redundancy check)也来自数据通信的领域,但明显地优于xor法。然而,crc校验和也还仅仅是差错检测码而不能用于差错校正,crc法已经在数据传输协议中使用很久了,诸如[xmodem,zmodem和kermit]①,并广泛用于以硬件实现的硬盘驱动控制器,它立足于cc11t v.41的建议。
crc校验和用一个16位的循环反馈移位寄存器产生,反馈由生成多项式确定。用数学的语言来说,被校验的数据表示为被生成多项式除的大数字,其余数为校验和。这种方法不能应用在大于4kb的数据,超过此点后检错概率急剧下降。然而,这一限制可由把数据分成不超过4kb的字组而轻易地避开。
表1 crc计算中常用的生成多项式
这样,对于crc校验和必需知道生成多项式以及移位寄存器的初始值,否则就不能再现原来的计算。在压倒性多数的情况中(即iso 3309)移位寄存器的初始值为0,但有些数据传输过程(诸如cc11t建议x.25)则将所有位均置为1。
如图1所示,crc校验和计算过程进行如下:(1)16位crc寄存器被置人其初始值;(2)数据逐位送人反馈移位寄存器中,从最低位开始;(3)反馈(它表示多项式除法)经位逻辑x0r运算在crc位上进行。当所有数据位都已经馈送至寄存器后,计算完成,而16位的内容即是所需之crc校验和。
图1用生成多项式g(x)=x16+x12+x5+1计算crc校验和(数据和crc寄存器均按位来表示)
重新计算数据的crc校验和并将它和随数据发送的校验和相比较即可验证校验和。若它们是一样的,则可知数据及校验和未曾改变。
crc校验的最大优点是提供了对即使是多重差错的可靠检测。只有很少的方法能做到这样。此外,和x0r方法不同,用crc能检测出数据字节之间的交换,因为字节顺序在经反馈移位寄存器形成校验和时扮演了明确的角色。然而,很难准确地指明对这类差错的检出率,因为它们依赖于差错在所提及的字节中的位置。
crc算法比较简单,而实现它所需之编码量和智能卡的较小的存储量的需求也能相匹配。它最大的缺点是其计算速度慢,由于算法需要数据逐位移位,使得其速度显著降低。crc校验和算法最初是为用硬件实现设计的,当用软件实现它时就受到了很大的影响。crc子程序的吞吐率低于x0r子程序的吞吐率的比例因数约为200。一个代表性的数字是在3.5mhz的时钟频率时每字节传输为0.2ms。于是,计算10kb智能卡rom的crc校验和大约需要2s。
图2 计算crc校验和之例,生成多项式为:g(x)=x16+x12+x5+1
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
循环冗余校验法crc((jyclic redundancy check)也来自数据通信的领域,但明显地优于xor法。然而,crc校验和也还仅仅是差错检测码而不能用于差错校正,crc法已经在数据传输协议中使用很久了,诸如[xmodem,zmodem和kermit]①,并广泛用于以硬件实现的硬盘驱动控制器,它立足于cc11t v.41的建议。
crc校验和用一个16位的循环反馈移位寄存器产生,反馈由生成多项式确定。用数学的语言来说,被校验的数据表示为被生成多项式除的大数字,其余数为校验和。这种方法不能应用在大于4kb的数据,超过此点后检错概率急剧下降。然而,这一限制可由把数据分成不超过4kb的字组而轻易地避开。
表1 crc计算中常用的生成多项式
这样,对于crc校验和必需知道生成多项式以及移位寄存器的初始值,否则就不能再现原来的计算。在压倒性多数的情况中(即iso 3309)移位寄存器的初始值为0,但有些数据传输过程(诸如cc11t建议x.25)则将所有位均置为1。
如图1所示,crc校验和计算过程进行如下:(1)16位crc寄存器被置人其初始值;(2)数据逐位送人反馈移位寄存器中,从最低位开始;(3)反馈(它表示多项式除法)经位逻辑x0r运算在crc位上进行。当所有数据位都已经馈送至寄存器后,计算完成,而16位的内容即是所需之crc校验和。
图1用生成多项式g(x)=x16+x12+x5+1计算crc校验和(数据和crc寄存器均按位来表示)
重新计算数据的crc校验和并将它和随数据发送的校验和相比较即可验证校验和。若它们是一样的,则可知数据及校验和未曾改变。
crc校验的最大优点是提供了对即使是多重差错的可靠检测。只有很少的方法能做到这样。此外,和x0r方法不同,用crc能检测出数据字节之间的交换,因为字节顺序在经反馈移位寄存器形成校验和时扮演了明确的角色。然而,很难准确地指明对这类差错的检出率,因为它们依赖于差错在所提及的字节中的位置。
crc算法比较简单,而实现它所需之编码量和智能卡的较小的存储量的需求也能相匹配。它最大的缺点是其计算速度慢,由于算法需要数据逐位移位,使得其速度显著降低。crc校验和算法最初是为用硬件实现设计的,当用软件实现它时就受到了很大的影响。crc子程序的吞吐率低于x0r子程序的吞吐率的比例因数约为200。一个代表性的数字是在3.5mhz的时钟频率时每字节传输为0.2ms。于是,计算10kb智能卡rom的crc校验和大约需要2s。
图2 计算crc校验和之例,生成多项式为:g(x)=x16+x12+x5+1
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
上一篇:智能卡的差错校正
上一篇:智能卡的XOR校验和