2022-05-08
コードを手入力したり、音声で伝えたりする機会は極力減らし、自動データ連携がベストです。

人が生成する場合は、選択コンポーネントを使って不正な、または、間違ったデータができない仕組みを用意しましょう。(参考、アドレス・ベース・レジストリを使った都道府県選択コンポーネント

その確認もできない環境であれば、チェックデジットが有効ですが、使うアルゴリズムによっては強度が弱いので注意です。今、付ける場合ば、IMI2プロジェクト、GIF/コード(分類体系)導入実践ガイドブックでも記載されている、Dammアルゴリズム一択です!


「CheckCheckDigits」

現在使われているチェックデジットのアルゴリズムを一通りJavaScript(ESモジュール)で実装してみました。番号を入れるとすべてのアルゴリズムで検査し、正しいものを赤く表示します。


「code4fukui/CheckCheckDigits on GitHub」

Damm, Verhoeff, Luhn, Modulus10, Modulus11, Modulus9の6種類をまとめて検査するAPI、checkCheckDigitsもシンプルに使えるオープンソース。ブラウザ上や、Denoで下記のように使えます。 import { checkCheckDigits } from "https://code4fukui.github.io/CheckCheckDigits/checkCheckDigits.js"; console.log(checkCheckDigits("182079"));

2015年にスタートした法人番号のチェックデジットが0と9の誤りを検出できないModulus9が採用された理由が気になります。同じく、2015年スタートのマイナンバーこと個人番号も全国地方公共団体コードや、運転免許証などと同じModulus11となってしまったのは残念!(参考、第404号コラム「マイナンバーのチェックデジットについて」 | コラム | デジタル・フォレンジック研究会1の出現確率が倍 - Modulus11.test.js

チェックデジットがいらないデジタル社会を理想に、どうしても使う場合はDamm(ダム)アルゴリズムで!

各チェックデジットアルゴリズム、自分のよく使うプログラミング言語への対応貢献、大歓迎!
CheckCheckDigits src on GitHub

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS