Luhn 알고리즘 검사기
Luhn은 검증 숫자만 확인하며 카드 활성 여부는 확인하지 않습니다.
Luhn 알고리즘(ISO/IEC 7812-1)은 신용카드 번호, IMEI 기기 식별자, 캐나다 SIN, 미국 NPI 등 여러 번호 체계를 한 자릿수 입력 오류로부터 보호하는 체크섬입니다. 숫자 문자열을 붙여넣으면(공백과 하이픈은 무시됨) 해당 번호가 유효한지 판정하고, 배가와 합산 단계를 차례로 보여주므로 원한다면 직접 손으로 확인할 수도 있습니다.
Luhn 검사를 계산하는 방법
-
1
숫자가 아닌 문자 제거
공백, 하이픈, 마침표는 제거되며 0~9 숫자만 계산합니다.
-
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자리 | 예 |
| 이스라엘 신분증(Teudat Zehut) | 9자리 | 예 |
| ISBN-13 | 13자리 | 아니요(가중치 1과 3의 mod 10 사용) |
Luhn이 감지하는 것과 놓치는 것
- 감지: 모든 한 자릿수 오류와 인접한 자릿수 자리바꿈의 대부분(전부는 아님).
- 놓침: 09 ↔ 90 자리바꿈과 이와 비슷한 몇몇 쌍. 이것은 보안 검사가 아니라 입력 오류 검사입니다.
- 보안 기능이 아닙니다. Luhn에 부합하는 번호는 쉽게 만들 수 있습니다. 결제 게이트웨이의 PAN 검증은 Luhn뿐 아니라 발급사 번호 범위, CVV, AVS, 3-D Secure를 함께 사용합니다.
자주 묻는 질문
아니요. Luhn은 번호가 수학적으로 올바르게 구성되었는지만 확인합니다. 카드가 발급되었는지, 잔액이 있는지, 도난되었는지에 대해서는 아무것도 알려주지 않습니다. 실제 검증은 승인 시 발급사에서 이루어집니다.
네. 마지막 자리는 검사 숫자로, 합계가 10으로 나누어지도록 항상 선택할 수 있습니다. IMEI 생성기와 테스트 카드 번호가 이런 방식으로 동작합니다.
모든 한 자릿수 치환과 인접 자릿수 자리바꿈의 대부분을 감지하지만, 일부 쌍(예: 09 ↔ 90)은 체크섬을 바꾸지 않습니다. 더 견고한 방식(ISBN-13, Verhoeff, Damm)은 복잡성을 감수하는 대신 더 넓은 오류 검출 범위를 제공합니다.
검사기는 전적으로 브라우저 안에서 실행되므로 아무것도 전송되지 않습니다. 다만 필요하지 않은 곳에 실제 PAN 데이터를 붙여넣는 것은 나쁜 습관입니다. 실험할 때는 테스트 번호(예: 4242 4242 4242 4242)를 사용하세요.
Luhn은 어떤 길이에서도 작동하지만 특정 체계(보통 9~19자리)에 맞춰 표준화되어 있습니다. 이 검사기는 길이에 제한을 두지 않습니다.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
키보드 단축키 참고표
macOS, Windows, Linux에서 VS Code, Chrome, GNU Readline을 쓰는 Bash의 문서화된 기본 단축키를 검색합니다.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
색상 틴트 생성기
기준 색의 밝은 틴트를 생성합니다. 디자인 시스템 토큰, 배경, 호버 상태를 위한 3-20단계 스케일.
이메일 검증기
이메일 주소를 검증합니다. RFC 5322 구문 검사, 실시간 MX 레코드 조회, 그리고 로컬 파트, 도메인, 길이 정보를 제공합니다. 이메일은 전송되지 않습니다.
이 도구는 다른 언어로도 제공됩니다
- Vérificateur d'algorithme de Luhn [FR]
- Luhn-algoritmens kontrollverktyg [SV]
- أداة فحص خوارزمية Luhn [AR]
- เครื่องตรวจสอบอัลกอริทึมของ Luhn [TH]
- Luhn-Algorithmus-Prüfer [DE]
- Verificador del Algoritmo de Luhn [ES]
- Pemeriksa Algoritma Luhn [ID]
- Luhn-algoritme-checker [NL]
- Walidator algorytmu Luhna [PL]
- Trình kiểm tra thuật toán Luhn [VI]
- Luhnアルゴリズムチェッカー [JA]
- Validador do Algoritmo de Luhn [PT]
- Luhn Algorithm Checker [EN]
- Controllore dell'Algoritmo di Luhn [IT]
- Проверка по алгоритму Луна [RU]
- Luhn Algoritma Kontrolcüsü [TR]
- Luhn 算法校验工具 [ZH]