Luhnアルゴリズム計算機
クレジットカード番号やID番号の有効性を検証し、チェックデジットを計算します。
Luhnアルゴリズムとは?
Luhnアルゴリズム (Luhn Algorithm) は、ハンス・ピーター・ルーン (Hans Peter Luhn) によって1954年に開発されたチェックサム数式です。「Mod 10 アルゴリズム」とも呼ばれ、様々な識別番号の入力ミス(誤入力)を検出するために広く使用されています。
このアルゴリズムは、暗号学的ハッシュ関数ではなく、あくまで「うっかりミス」を防ぐためのものです。例えば、数字の打ち間違いや、隣り合う数字の入れ替わり(例: 12を21と入力)のほとんどを検出できます。
主な用途
- クレジットカード番号: VISA, MasterCard, Amex, Discoverなど主要なカードブランドで使用されています。
- IMEI番号: 携帯端末の識別番号。
- 社会保障番号: 一部の国(カナダなど)の社会保険番号で使用。
- 図書館カードや会員証: ユーザーIDの正当性チェック。
計算の手順 (検証の場合)
Luhnアルゴリズムによる検証は以下の手順で行われます。
- 右端の桁(チェックデジット)から数えて、1つ飛ばし(偶数番目)の数字を2倍にします。
- 2倍した結果が10以上の場合は、その各桁の和をとります(あるいは9を引いても同じ結果になります)。例:$7 \times 2 = 14 \rightarrow 1+4=5$ または $14-9=5$。
- 2倍しなかった桁(奇数番目)はそのままにします。
- すべての桁(変更したもの、しなかったもの、チェックデジット含む)の合計を計算します。
- この合計が10で割り切れる(つまり `合計 mod 10 == 0`)場合、その番号は有効です。
チェックデジットの計算方法
新しい番号を発行する際、最後の1桁(チェックデジット)をどう決めるかも同様の手順です。
- チェックデジットを除いた部分に対して上記の手順で合計を求めます。
- その合計に $x$ (チェックデジット) を足した値が10の倍数になるような最小の非負整数 $x$ を求めます。
- 式で表すと: $(S + x) \equiv 0 \pmod{10}$ $\Rightarrow x = (10 - (S \pmod{10})) \pmod{10}$
よくある質問
Q. このツールは安全ですか?
A. はい、安全です。この計算はすべてお使いのブラウザ内(クライアントサイド)で実行されます。入力された番号がサーバーに送信されたり保存されたりすることはありません。
Q. 全てのクレジットカード番号がLuhnアルゴリズムを使っていますか?
A. ほとんどの主要な国際ブランド(Visa, Mastercard, American Express, JCBなど)は使用しています。しかし、一部の独自のカードや古い規格では使用していない場合もあります。
Q. 入力ミスで検知できないものはありますか?
A. 「22」を「55」と入力するような、特定の「双子」のエラーや、非常に複雑な入れ替わりは検知できない場合がありますが、一般的な1桁の誤りや隣接交換の検出率は非常に高いです。