Pythonで NRICのチェックディジットを調べる

シンガポール人と永住権保持者には、国民登録番号 (National Registration Identification Card (NRIC))が与えられます。国民登録番号については、ここを参照してください。

国民登録番号の最初と最後にはアルファベットがあるのですが、最後のアルファベットはチェックディジットとして使われています。つまり、適当に番号を作っても、最後のアルファベットが正しいものでなければ、無効な番号となります。

シンガポールの国民登録番号のチェックディジットはモジュラス11 ウェイト2 – 7を使用しています(最初のアルファベットがSの場合)。アルゴリズムは以下:

  1. 数値の各桁に、2から7のウェイト(係数)を掛け、各桁の結果の合計を求める。
  2. 合計を11で割り、モジュラス(余り)を求める
  3. このモジュラスを 11 から引いたもの(11 – モジュラス)がチェックデジット

このアルゴリズム、公式に公開されているわけではなく、オープンソースのドキュメントに一部の情報が書かれているという程度です。なので、ソースコードをまるごとここに公開するのも気が引けるので、動画でお届けします。

例えば、最初と最後のアルファベットを除いた番号が、7012345の場合(1970年生まれのID)、最後のアルファベットはBということになります。つまり、S7012345Bはアルゴリズムからいくと有効な番号。存在するかどうかは別としてね。

投稿者: ImanisinamI

はじめまして。 シンガポールに住み始めて15年。こちらの生活に慣れてしまって、便利な生活が当たり前になってしまったこの頃、シンガポールでの生活を日本の知り合いに話すと、すごいね!って驚かれることがあります。 そこで、シンガポールのITやテック事情などを紹介することができればと思い、このブログをはじめました。 私はもともと理工系で学び、IT企業に就職。その後、短大の専任講師&大学の非常勤講師としてIT関連の授業を教えていました。2005年にシンガポールに移住してからは、シンガポールの高等教育機関のIT学部で教鞭をとっています。 このブログを通して、日本の学生さんにもシンガポールのことを知って頂ければ嬉しいです。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中