マイナンバー制度についてはこちら>>

マイナンバーチェックのしくみ ←クリック

住民票をもった国民一人一人に割り当てられるマイナンバー(個人番号)
12桁の数字で構成されるのですが、この下一桁がチェックデジット(いわゆる検査用数字)になっているのはご存知でしょうか?
つまり、左から11桁と公式によって割り出される検査数字1桁を加えた12桁の数字で構成されているんです♪

マイナンバー制度についてはこちら>>

マイナンバー チェックデジット←クリック

総務省令第八十五号『検査用数字を算出する算式』
第五条 令第八条の総務省令で定める算式は、次に掲げる算式とする。

算式
11―(n=1(シグマ)11(Pn×Qn))を11で除した余り)
ただし、(n=1(シグマ)11(Pn×Qn))を11で除した余り≦1の場合は、0とする。

算式の符号
Pn 個人番号を構成する検査用数字以外の十一桁の番号の最下位の桁を1桁目としたときのn桁目の数字
Qn 1≦n≦6のとき n+1 7≦n≦11のとき n―5

マイナンバー 検査数字算出方法←クリック

n=1からn=11までのPn,Qn,Pn×Qnを計算します。

P1 = 12345678901の一番右の「1」
Q1 = nが1以上6以下だからn+1=1+1=2となって,「2」
P1×Q1=1×2=2

P2 = 12345678901の右から2つ目の「0」
Q2 = nが1以上6以下だからn+1=2+1=3となって,「3」
P2×Q2=0×3=0

P3 = 12345678901の右から3つ目の「9」
Q3 = nが1以上6以下だからn+1=3+1=4となって,「4」
P3×Q3=9×4=36

P4 = 12345678901の右から4つ目の「8」
Q4 = nが1以上6以下だからn+1=4+1=5となって,「5」
P4×Q4=8×5=40

P5 = 12345678901の右から5つ目の「7」
Q5 = nが1以上6以下だからn+1=5+1=6となって,「6」
P5×Q5=7×6=42

P6 = 12345678901の右から6つ目の「6」
Q6 = nが1以上6以下だからn+1=6+1=7となって,「7」
P6×Q6=6×7=42

P7 = 12345678901の右から7つ目の「5」
Q7 = nが7以上11以下だからn-5=7-5=2となって,「2」
P7×Q7=5×2=10

P8 = 12345678901の右から8つ目の「4」
Q8 = nが7以上11以下だからn-5=8-5=3となって,「3」
P8×Q8=4×3=12

P9 = 12345678901の右から9つ目の「3」
Q9 = nが7以上11以下だからn-5=9-5=4となって,「4」
P9×Q9=3×4=12

P10 = 12345678901の右から10桁目の「2」
Q10 = nが7以上11以下だからn-5=10-5=5となって,「5」
P10×Q10=2×5=10

P11 = 12345678901の右から11桁目の「1」
Q11 = nが7以上11以下だからn-5=11-5=6となって,「6」
P11×Q11=1×6=6

P1×Q1からP11×Q11までの和を計算。

2+0+36+40+42+42+10+12+12+10+6=212

11で割ったあまりを求めます。

212÷11=19あまり3

11-3=8

(この時、余りの数字が1以下の場合はすべて「0」となります)

1234567890と8で、12345678908がマイナンバーとなります。

プログラムにするとこんな感じ♪←クリック

マイナンバーの検査数字を算出してみましょう〜!

check_digit関数を作成して引数にマイナンバー11桁を入れます。

Javascript

function check_digit(mynumber) {
    var sum, n, p, q, mo, rel;

    if(!mynumber.match(/^[0-9]{11}$/)) {
        return;
    }

    sum = 0;
    for(n = 1; n <= 11; n++) {
        p = mynumber.substr(11 - n, 1);
        q = n >= 1 && n <= 6 ? n + 1 : n - 5;
        sum += p * q;
    }

    mo = sum % 11;
    rel = mo <= 1 ? 0 : 11 - mo;

    return rel;
}

vb

function check_digit(mynumber As String) As Integer
    Dim sum As Integer
    Dim n As Integer
    Dim p As Integer
    Dim q As Integer
    Dim mo As Integer
    Dim rel As Integer

    If is_numeric(mynumber) = False Then Exit Function
    If Len(mynumber)<>11 Then Exit Function

    For n = 1 to 11
        p = Left(Right(mynumber, n), 1)
        q = IIf(n >= 1 And n <= 6, n + 1, n - 5)
        sum = sum + (p * q)
    Next

    mo = sum mod 11
    rel = IIf(mo <= 1, 0, 11 - mo)

    Return rel

 End Function

参考文献←クリック

マイナンバー制度の対応ポイント

マイナンバー制度のしくみ
個人番号カード
番号を利用
罰則

内閣官房:マイナンバーサイト
http://www.cas.go.jp/jp/seisaku/bangoseido/

行政手続における特定の個人を識別するための番号の利用等に関する法律の規定による通知カード
及び個人番号カード並びに情報提供ネットワークシステムによる特定個人情報の提供等に関する省令
(平成26年内閣府・総務省令第85号)(PDF:201KB)
http://www.cas.go.jp/jp/seisaku/bangoseido/seirei/pdf/26-85.pdf

マイナンバー制度についてはこちら>>