JP3129865B2 - データの検証方法 - Google Patents
データの検証方法Info
- Publication number
- JP3129865B2 JP3129865B2 JP04339613A JP33961392A JP3129865B2 JP 3129865 B2 JP3129865 B2 JP 3129865B2 JP 04339613 A JP04339613 A JP 04339613A JP 33961392 A JP33961392 A JP 33961392A JP 3129865 B2 JP3129865 B2 JP 3129865B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- length
- check code
- crc check
- writing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Landscapes
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
に、CRCチェックコードを用いたデータの検証方法に
関する。
種々の情報記録媒体が普及している。たとえば、磁気カ
ードに代わる新たな情報記録媒体として、最近ではIC
カードが脚光を浴びている。このICカードには、薄型
のRAM、ROM、EEPROMなどのメモリ素子が内
蔵されている。このような携帯型の情報記録媒体には、
非常に重要な個人データが保存されることが多く、書き
込んだデータを読み出すときに、データエラーが生じて
いないかどうかを検証することは非常に重要である。こ
のため、データを書き込むときには、このデータにエラ
ーチェックコードを付加するのが一般的である。ICカ
ードにおいて一般的に用いられているエラーチェックコ
ードは、ISO−CCITTの規格に基づくCRC(Cy
clic Redundancy Check )チェックコードである。たと
えば、データDを書き込むときには、このデータDに基
づいて所定のアルゴリズムの論理演算を行い、CRCチ
ェックコードXを発生させ、データDとともにコードX
をメモリに書き込んでおく。そして、データDを読み出
すときには、コードXも一緒に読み出すようにし、この
コードXがデータDに基づく所定の論理演算によって発
生された正しいコードであるか否かを検証するのであ
る。コードXがデータDに対する正しいコードでない場
合には、データDかコードXがデータ化けを起こし、デ
ータエラーが生じているものと判断することができる。
通常は、書き込みを行った後に直ちに読み出しを行って
データエラーの有無を判断するベリファイ処理が行われ
ている。
に書き込む場合、各データのデータ長が固定であると、
取扱いが便利である。特に、ICカードに内蔵されたE
EPROMに対する書込処理は、所定の書込単位(たと
えば、32バイト)ごとに行われるため、EEPROM
に書き込むべき単位データの長さをこの書込単位に揃え
ておくと効率良い処理が可能になる。しかしながら、実
際には、種々のデータをすべて同じ長さにすることは困
難であり、各データごとに長さに違いが生じる。このよ
うに、異なる長さのデータに対して固定長の取扱いをす
るためには、実質的な意味をもたない余分なデータを付
加する必要がある。すなわち、実質的な意味をもった実
際のデータのデータ長が所定の固定長に満たない場合に
は、その不足分のデータ長をもった余分なデータを付加
することにより、全体として所定の固定長となるように
するのである。しかしながら、このような余分なデータ
を付加した場合、CRCチェックコードはこの余分なデ
ータについても作成されることになる。このような実質
的な意味をもたない余分なデータに対してもCRCチェ
ックコードによる検証を行う作業は、意味のない無駄な
作業であり、演算時間を無用に長引かせることになる。
駄のない検証を行うことのできるデータの検証方法を提
供することを目的とする。
リに書き込む時に、このデータについてのCRCチェッ
クコードを発生させ、このCRCチェックコードをデー
タとともに書き込むようにし、データを読出す時に、こ
のデータをCRCチェックコードとともに読出し、読出
したCRCチェックコードが読出したデータについての
正しいコードであるか否かを調べるデータの検証方法に
おいて、実質的な意味をもった第1の部分データに実質
的な意味をもたない第2の部分データを付加し、第1の
部分データの長さと第2の部分データの長さとの和が所
定の固定長となるようにして固定長のデータを書込単位
とする書き込みを行うようにし、かつ、第2の部分デー
タとして、全桁が0であるようなデータを用いるように
したものである。
な意味をもたない第2の部分データとして、全桁が0で
あるようなデータが用いられる。もともと、この第2の
部分データは、全体の長さを固定長に揃えるために付加
する意味のないデータであるから、全桁が0であっても
支障はない。一方、CRCチェックコードは、書込対象
となるデータを所定の値で割り算したときの余りとして
定義される。したがって、書込対象となるデータに0の
桁が多く含まれていれば、CRCチェックコードを求め
る演算を高速化することができ、無駄な演算を排除した
検証が可能になる。
明する。ここでは、ICカードに内蔵されているEEP
ROMに、固定長データを保存する場合を例にとって説
明する。いま、ICカード内のEEPROMに、図1に
示すように、データD1〜D4を書き込む処理を考え
る。ここで、データD1〜D4は、いずれも実質的な意
味をもったデータであり、それぞれ異なるデータ長をも
っている。しかしながら、ここでは、これらのデータを
固定長データとして取扱い、EEPROM内に保存する
ようにしている。一般に、EEPROMへのデータ書き
込みには、数msのオーダの時間を必要とする。このた
め、書込対象となるデータは、一旦、書込レジスタに転
送され、この書込レジスタからEEPROMの所定アド
レスへの書き込みが行われる。したがって、EEPRO
Mへの書込処理は、この書込レジスタのデータ長に相当
する書込単位ごとに行われることになる。このような理
由から、このEEPROMへの書込単位に応じた固定長
を定義しておき、この固定長ごとにデータの保存を行う
のが効率的である。
位(すなわち、書込レジスタのデータ長)が32バイト
の場合の例である。ISO−CCITTの規格によるC
RCチェックコードは、2バイトの長さをもつ。そこ
で、このCRCチェックコードのためのコード領域CR
Cを含めた上での長さを32バイトとするためには、デ
ータのための領域を30バイトの固定長にする必要があ
る。そこで、実質的な意味のあるデータ領域DATA
に、実質的な意味のないデータ領域RFU(Reserved f
or Future Use の意味)を付加して、領域DATAと領
域RFUとの合計の長さが固定長30バイトとなるよう
にしている。具体的には、実質的な意味のあるデータD
1〜D4に、それぞれ実質的な意味のないデータd1〜
d4を付加して、固定長30バイトのデータを作成し、
CRCチェックコードE1〜E4は、この固定長30バ
イトのデータに対して生成するようにしている。
ードE1〜E4を、データD1〜D4(およびd1〜d
4)とともに書き込んでおくようにすれば、書込時にデ
ータ化けが生じた場合であっても、これをデータエラー
として検出することができる。すなわち、データD1〜
D4を読み出す場合には、意味のないデータd1〜d4
およびCRCチェックコードE1〜E4も一緒に読み出
すようにし、書込時と同じ手法によってCRCチェック
コードを発生させ、このCRCチェックコードが読み出
したCRCチェックコードE1〜E4と一致するか否か
を判定すればよい。不一致の場合には、いずれかにデー
タ化けが生じたものと判断することができる。
チェックコードは、書込対象となるデータQを所定の値
P(具体的には、2進数表示で「1000100000
0100001」なる17ビットの数)で割ったときの
余りとして定義されている。したがって、たとえば、図
1におけるデータD1についての書き込みを行う場合に
は、RFU領域のデータd1を含めた「D1・d1」な
る値をデータQとし、これを値Pで割ったときの余りと
して、CRCチェックコードE1が生成されることにな
る。このように、CRCチェックコードE1は、実質的
な意味のないデータd1の情報までも考慮して生成され
ることになる。同様に、CRCチェックコードE2,E
3,E4は、それぞれ実質的な意味のないデータd2,
d3,d4の情報までも考慮して生成される。したがっ
て、このようなCRCチェックコード発生演算には、実
質的には無駄な演算が含まれていることになる。
うな方法により解消したものである。すなわち、図2に
示すように、実質的な意味のあるデータ(領域DATA
内に示す*印のデータ)に実質的な意味のないデータ
(領域RFU内のデータ)を付加して、全データ長を3
0バイトにする場合に、実質的な意味のないデータとし
て、全桁が「0」であるようなデータを用いるのであ
る。領域RFU内のデータは、データ長を30バイトに
するためのいわば桁合わせの目的のために付加されるデ
ータであるから、どのような値のデータであってもかま
わない。したがって、全桁が「0」であるようなデータ
であってもかまわないことになる。このように、領域R
FU内のバイトがすべて0であると、CRCチェックコ
ードを発生させる演算が非常に簡単になる。前述のよう
に、CRCチェックコードは、図2に示す30バイトの
長さのデータ全体に対して、所定の値P(具体的には、
2進数表示で「10001000000100001」
なる17ビットの数)による割り算を実施し、そのとき
の余りとして定義されている。このような割り算は、実
際には2進数の形式で行われ、被除数に0がある場合に
は、シフトレジスタ上で1ビットだけシフトする動作を
行えばよい。このような理由により、被除数に0が多く
含まれていれば、それだけこの除算の演算時間を短縮さ
せることができる。したがって、図2に示すように、領
域RFU内のデータとして、全桁が「0」であるような
データを採用することは、CRCチェックコードを生成
する演算を効率化し、演算時間を短縮させる効果を奏す
ることになる。結局、本発明によれば、図1において、
実質的な意味のない付加データd1〜d4は、いずれも
全桁が「0」であるようなデータということになる。
に対するデータ書き込みを例にとって説明したが、本発
明はICカード以外についても広く適用可能である。
証方法によれば、全体の長さを固定長に揃えるために、
実質的な意味をもたないデータを付加する場合に、全桁
が0であるようなデータを付加するようにしたため、C
RCチェックコードを求める演算を高速化することがで
き、無駄な演算を排除した検証が可能になる。
データD1〜D4を、付加データd1〜d4およびCR
CチェックコードE1〜E4とともに書き込んだ状態を
示す図である。
データ構造を示す図である。
データ) d1〜d4…固定長に揃えるための付加データ(実質的
な意味のないデータ) E1〜E4…CRCチェックコード
Claims (1)
- 【請求項1】 データをメモリに書き込む時に、このデ
ータについてのCRCチェックコードを発生させ、この
CRCチェックコードをデータとともに書き込むように
し、データを読出す時に、このデータをCRCチェック
コードとともに読出し、読出したCRCチェックコード
が読出したデータについての正しいコードであるか否か
を調べるデータの検証方法において、実質的な意味をも
った第1の部分データに実質的な意味をもたない第2の
部分データを付加し、第1の部分データの長さと第2の
部分データの長さとの和が所定の固定長となるようにし
て固定長のデータを書込単位とする書き込みを行うよう
にし、かつ、前記第2の部分データとして、全桁が0で
あるようなデータを用いるようにしたことを特徴とする
データの検証方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04339613A JP3129865B2 (ja) | 1992-11-26 | 1992-11-26 | データの検証方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04339613A JP3129865B2 (ja) | 1992-11-26 | 1992-11-26 | データの検証方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06161795A JPH06161795A (ja) | 1994-06-10 |
JP3129865B2 true JP3129865B2 (ja) | 2001-01-31 |
Family
ID=18329152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04339613A Expired - Lifetime JP3129865B2 (ja) | 1992-11-26 | 1992-11-26 | データの検証方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3129865B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008287511A (ja) * | 2007-05-17 | 2008-11-27 | Dainippon Printing Co Ltd | Icカード及びicカード発行機及びicカード利用端末機 |
-
1992
- 1992-11-26 JP JP04339613A patent/JP3129865B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH06161795A (ja) | 1994-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4417629B2 (ja) | ビット変更を可能にする、フラッシュメモリにおける使用のための、改良されたエラー修正方式 | |
US4800520A (en) | Portable electronic device with garbage collection function | |
JP2537199B2 (ja) | Icカ―ド | |
US5963970A (en) | Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields | |
US6353910B1 (en) | Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage | |
US20080282128A1 (en) | Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance | |
JPH03503220A (ja) | メッセージの完全性をチェックする方法及び携帯装置 | |
JP2557838B2 (ja) | Icカ−ド | |
EP0383899B1 (en) | Failure detection for partial write operations for memories | |
JP3129865B2 (ja) | データの検証方法 | |
JPH01152589A (ja) | 携帯可能なデータ担体 | |
JP3471842B2 (ja) | データ管理装置、データ記憶装置およびデータ管理方法 | |
US4564941A (en) | Error detection system | |
US6754857B2 (en) | Method of testing cache memory | |
JP3222592B2 (ja) | データの検証装置 | |
JP2002244932A (ja) | 制御装置 | |
JP3391475B2 (ja) | データの書き込み方法および読み出し方法ならびにこれらの方法を実施するデータ記録再生装置 | |
JP3130588B2 (ja) | 記憶媒体 | |
JP2864288B2 (ja) | Icカードにおけるエラーチェック方法 | |
JP2808358B2 (ja) | Icカード | |
JP3231448B2 (ja) | Icカード | |
JPS61199141A (ja) | 記憶装置 | |
JP2532057B2 (ja) | 誤り検出機能を備えたicカ−ド | |
JP2537198B2 (ja) | 携帯可能電子装置 | |
CN116431527A (zh) | 一种地址重映射的数据读写方法、***、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071117 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081117 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091117 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091117 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101117 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101117 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111117 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121117 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131117 Year of fee payment: 13 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131117 Year of fee payment: 13 |