智能卡的CRC校驗和
出處:kcl123 發(fā)布于:2008-11-20 16:29:31
循環(huán)冗余校驗法CRC((Jyclic Redundancy Check)也來自數(shù)據(jù)通信的領域,但明顯地優(yōu)于XOR法。然而,CRC校驗和也還僅僅是差錯檢測碼而不能用于差錯校正,CRC法已經(jīng)在數(shù)據(jù)傳輸協(xié)議中使用很久了,諸如[Xmodem,Zmodem和Kermit]①,并廣泛用于以硬件實現(xiàn)的硬盤驅(qū)動控制器,它立足于CC11T V.41的建議。
CRC校驗和用一個16位的循環(huán)反饋移位寄存器產(chǎn)生,反饋由生成多項式確定。用數(shù)學的語言來說,被校驗的數(shù)據(jù)表示為被生成多項式除的大數(shù)字,其余數(shù)為校驗和。這種方法不能應用在大于4KB的數(shù)據(jù),超過此點后檢錯概率急劇下降。然而,這一限制可由把數(shù)據(jù)分成不超過4KB的字組而輕易地避開。
表1 CRC計算中常用的生成多項式

這樣,對于CRC校驗和必需知道生成多項式以及移位寄存器的初始值,否則就不能再現(xiàn)原來的計算。在壓倒性多數(shù)的情況中(即ISO 3309)移位寄存器的初始值為0,但有些數(shù)據(jù)傳輸過程(諸如CC11T建議X.25)則將所有位均置為1。
如圖1所示,CRC校驗和計算過程進行如下:(1)16位CRC寄存器被置人其初始值;(2)數(shù)據(jù)逐位送人反饋移位寄存器中,從位開始;(3)反饋(它表示多項式除法)經(jīng)位邏輯X0R運算在CRC位上進行。當所有數(shù)據(jù)位都已經(jīng)饋送至寄存器后,計算完成,而16位的內(nèi)容即是所需之CRC校驗和。

圖1用生成多項式G(x)=x16+x12+x5+1計算CRC校驗和(數(shù)據(jù)和CRC寄存器均按位來表示)
重新計算數(shù)據(jù)的CRC校驗和并將它和隨數(shù)據(jù)發(fā)送的校驗和相比較即可驗證校驗和。若它們是一樣的,則可知數(shù)據(jù)及校驗和未曾改變。
CRC校驗的優(yōu)點是提供了對即使是多重差錯的可靠檢測。只有很少的方法能做到這樣。此外,和X0R方法不同,用CRC能檢測出數(shù)據(jù)字節(jié)之間的交換,因為字節(jié)順序在經(jīng)反饋移位寄存器形成校驗和時扮演了明確的角色。然而,很難準確地指明對這類差錯的檢出率,因為它們依賴于差錯在所提及的字節(jié)中的位置。
CRC算法比較簡單,而實現(xiàn)它所需之編碼量和智能卡的較小的存儲量的需求也能相匹配。它的缺點是其計算速度慢,由于算法需要數(shù)據(jù)逐位移位,使得其速度顯著降低。CRC校驗和算法初是為用硬件實現(xiàn)設計的,當用軟件實現(xiàn)它時就受到了很大的影響。CRC子程序的吞吐率低于X0R子程序的吞吐率的比例因數(shù)約為200。一個代表性的數(shù)字是在3.5MHz的時鐘頻率時每字節(jié)傳輸為0.2ms。于是,計算10KB智能卡ROM的CRC校驗和大約需要2s。

圖2 計算CRC校驗和之例,生成多項式為:G(x)=x16+x12+x5+1
歡迎轉載,信息來源維庫電子市場網(wǎng)(www.hbjingang.com)
上一篇:智能卡的XOR校驗和
下一篇:智能卡的差錯校正
版權與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權均屬于維庫電子市場網(wǎng),轉載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關法律責任。
本網(wǎng)轉載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉載時,必須保留本網(wǎng)注明的作品出處,并自負版權等法律責任。
如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點總結2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復控制的復合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎知識2025/6/18 16:30:52









