もしマイナンバーにおける個人番号の検査用数字の計算法がISBN13互換だったら

このプログラムは、「もし個人番号の検査用数字がISBN13やJANコードなどと互換の1-3 mod 10方式だったらどうだったか」という話を 検証するために造ったものです。 実は私(上原)はパブリックコメントにおいて検査用数字をISBN13互換にするべきじゃないのかと提案していました。 ただ、実際にこのプログラムで調べたら実はISBN13互換はイマイチ2桁入替誤りに弱いのでどっちもどっちという気もしています。 本来はコラムで指摘したように Dammのアルゴリズムの方がずっと良いのですが、 パブコメ書いていたときは本当に時間がなくて…残念です。

このプログラムでは以下の手順で誤り率を計算しています。

  1. 11桁の乱数を発生し、それにISBN13互換で検査用数字を計算して加えてニセの個人番号を生成。検査用数字に応じて出現数を1増やす。
  2. 12桁のうち乱数で決めた桁の数字を書き換え、それでもニセ個人番号として有効(ISBN13互換検査用数字が一致)なら、1桁誤り発生数を1増やす。
  3. 12桁のうち乱数で決めた隣り合う2桁の数字を入れ替え、それでもニセ個人番号として有効(ISBN互換検査用数字が一致)なら、2桁入替誤り発生数を1増やす。
なお、2桁入替誤りが発生したときにはその個人番号を下に列挙しています。 ホンモノの個人番号の時と比較して確かめてみて下さい。

検査用数字出現数1桁誤り発生数2桁入替誤り発生数
0
1
2
3
4
5
6
7
8
9
合計

2桁入れ替え誤り発生個人番号

Written by Tetsutaro UEHARA.
すなばに戻る