マイナンバーのチェックディジット計算

[2018-08-07 おことわり] JavaScriptで書かれたマイナンバーのチェックディジット計算プログラムを公開していましたが,個人情報保護委員会様から,入力されたものがネットに流れないことはソースで確認したが,マイナンバー収集を誤認するようなページは好ましくないのではないかというご意見をいただきました。確かにもっともなことですので,ソースコードを示すだけにとどめることにしました。このソースを打ち込めば確認できますので,ご自分でお試しください。

<script>
function check() {
  var x, r, s, n, p, q;
  x = document.getElementById("input").value;
  if (x.length != 11) {
    r = 'Error';
  } else {
    s = 0;
    for (n = 1; n <= 11; n++) {
      p = x[11-n];
      q = (n <= 6) ? n+1 : n-5;
      s += p * q;
    }
    s %= 11;
    r = (s <= 1) ? 0 : 11 - s;
  }
  document.getElementById("output").value = r;
}
</script>

<p><label>マイナンバーの先頭11桁:<input id="input" size="13" onchange="check()"></label></p>

<p>マイナンバーの最後の桁(チェックディジット):<input id="output" size="5" readonly></p>

参考:総務省令第八十五号第五条