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

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

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

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

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

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