Luhnアルゴリズムチェッカー
Luhnはチェックデジットのみを検証し、カードが有効かどうかは確認しません。
Luhnアルゴリズム(ISO/IEC 7812-1)は、クレジットカード番号、IMEI端末識別番号、カナダのSIN、米国のNPIなど、さまざまな採番方式を1桁の入力ミスから保護するチェックサムです。数字列を貼り付けると(スペースとハイフンは無視されます)、その番号が有効かどうかを判定し、倍加と合計の各手順を表示するので、必要に応じて手作業で確認することもできます。
Luhnチェックの計算方法
-
1
数字以外を除去する
スペース、ハイフン、ドットは削除され、0〜9の数字だけが対象になります。
-
2
右から2桁ごとに倍にする
末尾から2桁目を起点に、1つおきの桁を2倍にします。
-
3
倍にした各値の桁を合計する
倍にして14になった場合は1 + 4 = 5を加えます。これは10以上の倍加値から9を引くのと同じです。
-
4
すべての結果を合計する
倍にして桁を加算した値と、変更していない桁をすべて足し合わせます。
-
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桁)。このチェッカーは桁数に上限を設けていません。
関連ツール
Webpack設定ジェネレーター
短いフォームからwebpack 5のwebpack.config.jsを生成します。entry・出力フォルダー・モードを設定し、TypeScript、Babel、CSSローダー、HtmlWebpackPlugin、開発サーバーを切り替えるだけです。
CMYK から RGB への変換
標準的な計算式で CMYK の割合をおおよその RGB 値と Hex 値に変換し、画面用にすばやく確認できます。
16進数から10進数への変換ツール
16進数を10進数(10進法)に変換します。メモリアドレス、エラーコード、RGBチャンネル、任意精度の整数に対応します。
.gitignore ジェネレーター
Laravel、Node.js、Python、Rails のプロジェクト用除外ルールを組み合わせます。結果をコピーするか、.gitignore 入りの ZIP をダウンロードできます。個人用ルールは別に表示します。
Markdownリンク生成ツール
URLとアンカーテキストからMarkdownリンクの記法を生成します。タイトルのツールチップや、長い文書を読みやすく整える参照形式のリンクにも対応しています。
Dockerfileジェネレーター
5つのアプリ構成に合うDockerfileと.dockerignoreを作成。実際の起動対象、作業ディレクトリ、内部ポートを入力し、両方のファイルを確認できます。
このツールは他の言語でも利用できます
- Pemeriksa Algoritma Luhn [ID]
- Luhn-algoritmens kontrollverktyg [SV]
- Luhn 알고리즘 검사기 [KO]
- เครื่องตรวจสอบอัลกอริทึมของ Luhn [TH]
- Walidator algorytmu Luhna [PL]
- Luhn-Algorithmus-Prüfer [DE]
- Trình kiểm tra thuật toán Luhn [VI]
- Validador do Algoritmo de Luhn [PT]
- Verificador del Algoritmo de Luhn [ES]
- أداة فحص خوارزمية Luhn [AR]
- Luhn-algoritme-checker [NL]
- Vérificateur d'algorithme de Luhn [FR]
- Luhn Algorithm Checker [EN]
- Controllore dell'Algoritmo di Luhn [IT]
- Проверка по алгоритму Луна [RU]
- Luhn Algoritma Kontrolcüsü [TR]
- Luhn 算法校验工具 [ZH]