Luhnアルゴリズムチェッカー

Luhnはチェックデジットのみを検証し、カードが有効かどうかは確認しません。

Luhnアルゴリズム(ISO/IEC 7812-1)は、クレジットカード番号、IMEI端末識別番号、カナダのSIN、米国のNPIなど、さまざまな採番方式を1桁の入力ミスから保護するチェックサムです。数字列を貼り付けると(スペースとハイフンは無視されます)、その番号が有効かどうかを判定し、倍加と合計の各手順を表示するので、必要に応じて手作業で確認することもできます。

Luhnチェックの計算方法

  1. 1

    数字以外を除去する

    スペース、ハイフン、ドットは削除され、0〜9の数字だけが対象になります。

  2. 2

    右から2桁ごとに倍にする

    末尾から2桁目を起点に、1つおきの桁を2倍にします。

  3. 3

    倍にした各値の桁を合計する

    倍にして14になった場合は1 + 4 = 5を加えます。これは10以上の倍加値から9を引くのと同じです。

  4. 4

    すべての結果を合計する

    倍にして桁を加算した値と、変更していない桁をすべて足し合わせます。

  5. 5

    10で割り切れるか確認する

    合計の末尾が0なら番号は有効です。そうでなければ無効です。

具体例

4539 1488 0343 6467を確認します:

位置(右→左) 数字 倍加した?
1 7 いいえ 7
2 6 はい 12 → 3
3 4 いいえ 4
4 6 はい 12 → 3
5 3 いいえ 3
6 4 はい 8
7 3 いいえ 3
8 0 はい 0
9 8 いいえ 8
10 8 はい 16 → 7
11 4 いいえ 4
12 1 はい 2
13 9 いいえ 9
14 3 はい 6
15 5 いいえ 5
16 4 はい 8

合計:80。80 mod 10 = 0 → 有効

Luhnが使われる場面

システム 桁数 Luhnで保護?
Visa、Mastercard、Discover 13〜19桁 はい
American Express 15桁 はい
IMEI(GSM端末ID) 15桁 はい
カナダの社会保険番号(SIN) 9桁 はい
米国の国家医療提供者識別番号(NPI) 10桁 はい
イスラエルのID(Teudat Zehut) 9桁 はい
ISBN-13 13桁 いいえ(重み1と3のmod 10を使用)

Luhnが検出できるもの・見落とすもの

  • 検出できるもの: すべての1桁の誤り、および隣接する桁の入れ替えの大半(ただし全部ではない)。
  • 見落とすもの: 09 ↔ 90の入れ替えや、これに似たいくつかの組み合わせ。これはセキュリティチェックではなく、入力ミスのチェックです。
  • セキュリティ機能ではありません。 Luhnに適合する番号は簡単に生成できます。決済ゲートウェイでのPAN検証には、発行会社の番号範囲、CVV、AVS、3-D Secureが使われ、Luhnだけではありません。

よくある質問

いいえ。Luhnは番号が数学的に正しく構成されているかを確認するだけです。そのカードが発行済みか、残高があるか、盗難されていないかについては何も分かりません。実際の検証は認証時に発行会社で行われます。

はい。最後の桁はチェックディジットで、合計が10で割り切れるように常に選べます。IMEIジェネレーターやテスト用カード番号はこの仕組みで動作します。

すべての1桁の置換と、隣接する桁の入れ替えの大半を検出しますが、一部の組み合わせ(例:09 ↔ 90)ではチェックサムが変わりません。より堅牢な方式(ISBN-13、Verhoeff、Damm)は、複雑さと引き換えにより広い誤り検出範囲を実現します。

チェッカーは完全にブラウザ内で動作するため、何も送信されません。ただし、必要のない場所に実際のPANデータを貼り付けるのは良くない習慣です。試すときはテスト番号(例:4242 4242 4242 4242)を使いましょう。

Luhnは任意の長さで機能しますが、特定の方式向けに標準化されています(通常は9〜19桁)。このチェッカーは桁数に上限を設けていません。

関連ツール

このツールは他の言語でも利用できます