さて
今回は免許証番号のチェックデジットについての
お話になります。
動画はこちら
免許証番号にも法則性があり
必ず一定のルールに従った番号体系になっています。
もしそのルールに番号に沿っていなかったら
そこで偽造だとわかる事になります。
まず最初に免許証番号のルールですが
こんな感じだそうです。
免許証番号は、県警察電算処理システムの電子計算機で管理し
新規免許登録時に付与されるが、 公安委員会コード
年号記号、交付番号及び再交付記号並びに
チェックデジットをもって構成する(12桁の数)。
例 309212345610
最初の2桁は公安委員会コード
続く2桁は発行年号(下2桁)
続く6桁が交付番号(発行番号)
その次1桁がチェックデジット
最後の1桁は再発行回数

公安委員会コードは定められていて
こんな感じです。
東京で取得したならば
30ということになります。
続く年号記号(3桁目と4桁目の数字)は
初めて免許を取得した年の西暦下2桁
になります。
例:
2019年に取得 → 19
1992年に取得 → 92
ということで
あまりにもかけ離れていた場合
(今25歳なのに99になっているとか)
その番号が偽りの番号であると
すぐにわかる仕組みです。
続く6桁は発行番号で
一意になるような番号体系です。
最後の12桁目は再交付記号
再交付記号「0」は、再発行がされた事がないのを示し
この数字は紛失・盗難などで再発行する度に増えていき
10回再発行された場合には「1」と記載される仕組みです
なのでほとんどの人は
再発行していないと思うので
「0」になっているのではないかと思います。
そして
11桁目がチェックデジットです。
免許証のチェックデジットの計算方法は
次のとおりになります。
左から10個の数字にそれぞれ、5,4,3,2,7,6,5,4,3,2をかけて合計する
例:「309212345690」のうちの「3092123456」
5×3+4×0+3×9+2×2+7×1+6×2+5×3+4×4+3×5+2×6=123
次に、これを11で割って余りを出す 123÷11=11 余り 2
さらに、11から余りを引く 11-2=9
計算式 :
上位10桁をabcdefghijとすると
(11 - (5a+4b+3c+2d+7e+6f+5g+4h+3i+2j) mod 11) mod 10
チェックデジットを計算する関数は次のようになります。
免許証番号を引数に入れると
チェックデジットが出ます。
これを使って
免許証番号を生成してみましょう。
東京で1999年に取得
交付番号はランダム
再発行は無し
とすると
309900219680
このような形で作ることができます。
このようにチェックデジットは
偽造の防止などに役立てられているので
この番号体系に合わないものは
すぐに弾ける仕組みとなっています。
ましWEBサービスを運営しているのであれば
こういった番号のチェックを行うことで
不正防止をすることができます。
皆様も
お手元に免許証があれば
ぜひ番号チェックをしてみてください
今回はこれまでです
それでは。
今回は免許証番号のチェックデジットについての
お話になります。
動画はこちら
免許証番号にも法則性があり
必ず一定のルールに従った番号体系になっています。
もしそのルールに番号に沿っていなかったら
そこで偽造だとわかる事になります。
まず最初に免許証番号のルールですが
こんな感じだそうです。
免許証番号は、県警察電算処理システムの電子計算機で管理し
新規免許登録時に付与されるが、 公安委員会コード
年号記号、交付番号及び再交付記号並びに
チェックデジットをもって構成する(12桁の数)。
例 309212345610
最初の2桁は公安委員会コード
続く2桁は発行年号(下2桁)
続く6桁が交付番号(発行番号)
その次1桁がチェックデジット
最後の1桁は再発行回数

公安委員会コードは定められていて
こんな感じです。
北海道 | 北海道 10 |
函館 11 |
旭川 12 |
釧路 13 |
北見 14 |
||||||
---|---|---|---|---|---|---|---|---|---|---|---|
東北 | 青森 20 |
岩手 21 |
宮城 22 |
秋田 23 |
山形 24 |
福島 25 |
|||||
関東甲信越 | 東京 30 |
茨城 40 |
栃木 41 |
群馬 42 |
埼玉 43 |
千葉 44 |
神奈川 45 |
新潟 46 |
山梨 47 |
長野 48 |
静岡 49 |
北陸・中部 | 富山 50 |
石川 51 |
福井 52 |
岐阜 53 |
愛知 54 |
三重 55 |
|||||
関西 | 滋賀 60 |
京都 61 |
大阪 62 |
兵庫 63 |
奈良 64 |
和歌山 65 |
|||||
中国 | 鳥取 70 |
島根 71 |
岡山 72 |
広島 73 |
山口 74 |
||||||
四国 | 徳島 80 |
香川 81 |
愛媛 82 |
高知 83 |
|||||||
九州・沖縄 | 福岡 90 |
佐賀 91 |
長崎 92 |
熊本 93 |
大分 94 |
宮崎 95 |
鹿児島 96 |
沖縄 97 |
30ということになります。
続く年号記号(3桁目と4桁目の数字)は
初めて免許を取得した年の西暦下2桁
になります。
例:
2019年に取得 → 19
1992年に取得 → 92
ということで
あまりにもかけ離れていた場合
(今25歳なのに99になっているとか)
その番号が偽りの番号であると
すぐにわかる仕組みです。
続く6桁は発行番号で
一意になるような番号体系です。
最後の12桁目は再交付記号
再交付記号「0」は、再発行がされた事がないのを示し
この数字は紛失・盗難などで再発行する度に増えていき
10回再発行された場合には「1」と記載される仕組みです
なのでほとんどの人は
再発行していないと思うので
「0」になっているのではないかと思います。
そして
11桁目がチェックデジットです。
免許証のチェックデジットの計算方法は
次のとおりになります。
左から10個の数字にそれぞれ、5,4,3,2,7,6,5,4,3,2をかけて合計する
例:「309212345690」のうちの「3092123456」
5×3+4×0+3×9+2×2+7×1+6×2+5×3+4×4+3×5+2×6=123
次に、これを11で割って余りを出す 123÷11=11 余り 2
さらに、11から余りを引く 11-2=9
計算式 :
上位10桁をabcdefghijとすると
(11 - (5a+4b+3c+2d+7e+6f+5g+4h+3i+2j) mod 11) mod 10
チェックデジットを計算する関数は次のようになります。
def check_menkyo_degit(t): a = 5*int(t[0]) b = 4*int(t[1]) c = 3*int(t[2]) d = 2*int(t[3]) e = 7*int(t[4]) f = 6*int(t[5]) g = 5*int(t[6]) h = 4*int(t[7]) i = 3*int(t[8]) j = 2*int(t[9]) degit = a+b+c+d+e+f+g+h+i+j return (11 - degit%11)%10 check_menkyo_degit('309212345690')9
免許証番号を引数に入れると
チェックデジットが出ます。
これを使って
免許証番号を生成してみましょう。
東京で1999年に取得
交付番号はランダム
再発行は無し
とすると
def make_menkyo(st=30,year=1999): t = str(st) + str(year)[2:4] t += '{0:06}'.format(random.randint(1,10000)) cd = check_menkyo_degit(t) return t + str(cd) + '0' make_menkyo()
309900219680
このような形で作ることができます。
このようにチェックデジットは
偽造の防止などに役立てられているので
この番号体系に合わないものは
すぐに弾ける仕組みとなっています。
ましWEBサービスを運営しているのであれば
こういった番号のチェックを行うことで
不正防止をすることができます。
皆様も
お手元に免許証があれば
ぜひ番号チェックをしてみてください
今回はこれまでです
それでは。