シンガポール人と永住権保持者には、国民登録番号 (National Registration Identification Card (NRIC))が与えられます。国民登録番号については、ここを参照してください。
国民登録番号の最初と最後にはアルファベットがあるのですが、最後のアルファベットはチェックディジットとして使われています。つまり、適当に番号を作っても、最後のアルファベットが正しいものでなければ、無効な番号となります。
シンガポールの国民登録番号のチェックディジットはモジュラス11 ウェイト2 – 7を使用しています(最初のアルファベットがSの場合)。アルゴリズムは以下:
- 数値の各桁に、2から7のウェイト(係数)を掛け、各桁の結果の合計を求める。
- 合計を11で割り、モジュラス(余り)を求める
- このモジュラスを 11 から引いたもの(11 – モジュラス)がチェックデジット
このアルゴリズム、公式に公開されているわけではなく、オープンソースのドキュメントに一部の情報が書かれているという程度です。なので、ソースコードをまるごとここに公開するのも気が引けるので、動画でお届けします。
例えば、最初と最後のアルファベットを除いた番号が、7012345の場合(1970年生まれのID)、最後のアルファベットはBということになります。つまり、S7012345Bはアルゴリズムからいくと有効な番号。存在するかどうかは別としてね。