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자리)에 맞춰 표준화되어 있습니다. 이 검사기는 길이에 제한을 두지 않습니다.
관련 도구
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
Webpack 설정 생성기
순수 JavaScript, React, Vue용 webpack 5 webpack.config.js를 만드세요. TypeScript, Babel, CSS 또는 Sass, 이미지, HtmlWebpackPlugin, 개발 서버, npm install 명령까지 함께 제공합니다.
텍스트 파일 인코딩 변환기
깨진 문자를 고치기 위해 텍스트를 UTF-8, UTF-16, Latin-1, Windows-1252 등 여러 인코딩 사이에서 변환하세요.
HEX → ASCII 변환기
16진 바이트 시퀀스를 ASCII 텍스트로 변환합니다. 프로토콜 디버깅, 리버스 엔지니어링, CTF 챌린지에 좋습니다.
XML 포매터
일관된 들여쓰기로 XML 문서를 정렬 출력하고, 정확한 줄 번호로 적격성 오류를 잡아냅니다.
Protocol Buffers 디코더
hex, Base64, Base64URL, 텍스트 또는 파일의 Protobuf 와이어 형식 바이트를 브라우저에서 디코딩하고 정확한 필드 후보를 확인한 뒤 비공개 보고서로 내보냅니다.
이 도구는 다른 언어로도 제공됩니다
- Pemeriksa Algoritma Luhn [ID]
- أداة فحص خوارزمية Luhn [AR]
- Verificador del Algoritmo de Luhn [ES]
- Luhn-Algorithmus-Prüfer [DE]
- Trình kiểm tra thuật toán Luhn [VI]
- Luhnアルゴリズムチェッカー [JA]
- Luhn-algoritmens kontrollverktyg [SV]
- Luhn-algoritme-checker [NL]
- Validador do Algoritmo de Luhn [PT]
- Vérificateur d'algorithme de Luhn [FR]
- Walidator algorytmu Luhna [PL]
- เครื่องตรวจสอบอัลกอริทึมของ Luhn [TH]
- Luhn Algoritma Kontrolcüsü [TR]
- Luhn 算法校验工具 [ZH]
- Luhn Algorithm Checker [EN]
- Controllore dell'Algoritmo di Luhn [IT]
- Проверка по алгоритму Луна [RU]