チェックディジット()は、識別番号などの転記や入力に伴う誤りを検出するため、番号の他の桁から一定の規則で計算して付加する数字である。チェックデジット、検査数字、検査用数字ともいう。数字以外の文字も用いる場合には、検査文字()と呼ばれる。検査文字の方式を定める国際規格には、数字列・英字列・英数字列を対象とするISO/IEC 7064がある。
JANコード、国際標準図書番号(ISBN)、国際標準逐次刊行物番号(ISSN)、クレジットカードの番号、法人番号などに用いられる。計算方式や検査桁の位置は、番号の体系によって異なる。
原理 チェックディジットは、番号に冗長性を持たせる誤り検出の仕組みである。番号の本体から検査桁を計算し、入力された検査桁と照合する。両者が異なる場合には、本体または検査桁に誤りがあると判定できる。例えばISSNでは、先頭7桁から算出した数字を8桁目に付け、転記誤りの検出に用いる。
代表的な計算方式では、各桁の数字に桁位置に応じた重みを掛け、得られた値の合計を一定の整数で割った剰余を利用する。ISBN-13では10を、ISBN-10とISSNでは11を法とする。ただし、同じ法を用いる方式でも、重みや計算手順は同一とは限らない。
利用例 + 代表的な識別番号の検査桁 識別番号 検査桁の位置・文字 計算方式 JANコードなどのGTIN 末尾の数字1桁 重み3と1を交互に用いる、法10の方式 ISBN-13 13桁目。0から9 先頭12桁に左から重み1・3を交互に掛ける、法10の方式 ISBN-10 10桁目。0から9、またはX 先頭9桁に重み10から2を掛ける、法11の方式。Xは10を表す ISSN 8桁目。0から9、またはX 先頭7桁に重み8から2を掛ける、法11の方式。Xは10を表す クレジットカードの番号 末尾の数字1桁 Luhnアルゴリズム 米国の医療提供者識別番号(NPI) 10桁目。0から9 接頭辞80840を付けたものとしてLuhnアルゴリズムを適用する 法人番号 先頭の数字1桁。1から9 12桁の基礎番号に重み1・2を交互に掛ける、法9の方式
ISBNは2007年1月1日に10桁から13桁へ移行した。ISBN-10では検査桁にXを用いる場合があるが、ISBN-13では検査桁も数字となる。また、チェックディジットは必ずしも末尾に付けるものではなく、日本の法人番号では12桁の基礎番号の前に付ける。
主な計算方式 重み付きの法10方式 ISBN-13では、検査桁を除いた12桁の数字を左から とすると、重み付きの合計は
となる。チェックディジット は
で求められる。ここで は、 を10で割った余りを表す。すなわち、合計に検査桁を加えた値が10の倍数になるようにする。合計が既に10の倍数である場合、検査桁は0とする。
例えば、先頭12桁が 978988970107 の場合、
であり、151を10で割った余りは1なので、検査桁は となる。完成した番号は 978-988-97010-7-9 である。
重み付きの法11方式 ISBN-10では、検査桁を除く9桁に、左から10、9、…、2の重みを掛けて合計する。その合計を11で割った余りを11から引き、検査桁とする。ただし、余りが0なら検査桁も0とし、検査桁が10になる場合にはXを用いる。
ISSNの計算手順も同様であるが、対象は先頭7桁で、重みは左から8、7、6、5、4、3、2となる。例えば 0317847 では、
となる。120を11で割った余りは10なので、検査桁は 、ISSNは 0317-8471 となる。
Luhnアルゴリズム
Luhnアルゴリズムでは、検査桁を除く番号の右端から1桁おきの数字を2倍する。2倍した結果が2桁になった場合は、その十の位と一の位を加える。これらの値と、2倍しなかった桁の数字を合計し、合計に検査桁を加えた値が10の倍数となるようにする。
この方式はクレジットカード番号に用いられる。米国のNPIでも採用されているが、NPIでは接頭辞 80840 が存在するものとして計算するため、番号にその接頭辞を表示しない場合も、接頭辞による寄与の24を合計に加える。
法人番号の方式 日本の法人番号では、基礎番号12桁のうち、右端から数えて奇数番目の数字の合計を 、偶数番目の数字の合計を とすると、検査用数字は
となる。結果は1から9までの整数で、基礎番号の先頭に付ける。例えば基礎番号が 700110005901 の場合、、 なので、 となる。37を9で割った余りは1であるため、検査用数字は8、法人番号は 8700110005901 となる。
検出能力と限界 検出できる誤りの種類は方式によって異なる。例えばISBN-10とISSNの法11方式は、1文字を別の文字に置き換える誤りと、異なる2文字の順序を交換する誤りを検出できる。しかし、複数の桁が変わると、その変化が計算上相殺され、誤りを検出できない場合がある。
検査文字の規格ISO/IEC 7064は、1文字の置換、文字の順序交換、文字列全体の位置ずれなどを検出の対象としている。規格に含まれる方式では、1文字の置換をすべて検出する一方、他の種類の誤りについては、すべてまたは高い割合で検出するとしており、あらゆる誤りの検出を保証するものではない。
チェックディジットの検査と、識別番号が正式に割り当てられているかどうかの確認は別である。例えば国際ISBN機関の計算ツールは、正当に割り当てられた出版者記号から番号を計算するためのものであり、新たなISBNの割当てを受けるためには各国のISBN機関に申請する必要がある。
また、誤りの検出と、誤りの位置を特定して自動的に訂正することは異なる。ISO/IEC 7064は、誤り検出と自動訂正の両方を目的とする方式や、意図的な偽造の検出を目的とする方式を適用範囲から除外している。
脚注
関連項目 誤り検出訂正 誤り訂正符号 チェックサム Luhnアルゴリズム Dammアルゴリズム ヴァーヘフアルゴリズム
外部リンク チェックデジットの計算方法 - GS1 Japan Calculating the Check Digit in an ISSN - アメリカ議会図書館(英語)