チェックディジットは間違いを救う?

今日、携帯電話から電話帳に登録されているところに電話をかけようと思ったら、

違う人のところにかかってしまった。まったく違う声で返ってきて驚いた。すんまへん。


なんでこんなことになってたのかというと、電話帳の登録時に手打ちした電話番号が間違ってたようです。

後で確認して直しておきました。


こういう数字だけ並んだ物はうっかり打ち間違えることもある。

ボタンを押し間違えたり、番号の順番が入れ替わったり、まぁありそうな話ではある。

その対策として一般的なのがチェックディジットですね。


チェックディジットが使われているもので一番有名なのはバーコードかな?

EANコードでは末尾の1桁はチェックディジットに割りあてられている。

ここに 4970090356423 という番号の振られたバーコードがある。

この末尾の3がチェックディジットである。

チェックディジットはチェックディジット以外の数字から求められて、チェックディジットを含め1文字の誤りを検出できる。

EANコードのチェックディジットはモジュラス10/ウェイト3という方式で、

右から奇数番目の数字だけ3倍して、全部の数字の総和をとって、10- 10で割った余り がチェックディジットになる。

検証は右から奇数番目の数字だけ3倍して総和を取って10で割り切れたら正解と。

この場合、総和が110になるから、正解と。

ここで最後の2を4に変えてみると、総和が116になり間違いであることが分かる

万能ではないにせよ1桁足すだけである程度は誤りを排除できる。


しかし、電話番号にはこういうものはない。

1つでも数字を間違えると違うところにかかってしまう。

クレジットカードの番号は末尾がチェックディジットになってるようだが、

お金に絡むものでも銀行の口座番号は必ずしもチェックディジットがあるわけではない。

というのがゆうちょ銀行の全国銀行データ通信システムへの接続時の話。

記号・番号から振込用の店名・預金種目・口座番号への変換の公式 (ゆうちょ銀行)

1から始まる口座番号、総合口座通帳の場合ですが、

記号の最初の1、最後の0と番号の最後の1は総合口座通帳の場合共通なのでこれは外す。

問題は記号の4桁目である。これは実はチェックディジットなんだけど、口座番号は7桁までしか入れられないので省略されることに。

なので口座番号の数字を1つでも間違えると問題が起きる。

実際には銀行振込では受取人名もあわせて知らせるので、誤りがあったらここで検出できるとはいえ。


本当は電話番号とかチェックディジットあればいいと思うんだけど、

いまさらどうにもならんというのが実情でしょうね。

間違い電話に悩まされている人を救う切り札になりうると思うんだけど。