개발자 도구
신용카드 번호 검증기|Luhn 알고리즘・카드사 판별
신용카드 번호를 입력하면 Luhn 알고리즘으로 체크 디지트를 검증하고 Visa・Mastercard・Amex 등의 카드사를 자동으로 판별합니다. 폼 유효성 검사 구현 확인에도 유용합니다.
[[ labels.client_side_note ]]
[[ labels.result_label ]]
| [[ labels.formatted_label ]] | [[ result.formatted ]] |
|---|---|
| [[ labels.brand_label ]] | [[ brandName ]] [[ labels.brand_unknown ]] |
| [[ labels.checksum_label ]] | ✓ [[ labels.checksum_valid ]] ✗ [[ labels.checksum_invalid ]] |
지원 브랜드 및 판별 조건(IIN・자릿수)
| 브랜드 | 시작 숫자(IIN) | 자릿수 |
|---|---|---|
| Visa | 4 | 13, 16, 19 |
| Mastercard | 51–55, 2221–2720 | 16 |
| American Express | 34, 37 | 15 |
| Discover | 6011, 65 | 16 |
| JCB | 3528–3589 | 16 |
| Diners Club | 300–305, 36, 38 | 14 |
| UnionPay | 62 | 16–19 |
사용 팁
- 실제 카드 번호가 아닌 샘플 버튼의 테스트 번호(Visa: 4111 1111 1111 1111 등)로 동작을 확인할 수 있습니다.
- 공백이나 하이픈이 포함되어 있어도 자동으로 제거하고 판별하므로 복사한 번호를 그대로 붙여넣어도 됩니다.
- 본 도구는 Luhn 알고리즘을 이용한 형식 검사만 수행합니다. 실제 승인・잔액 확인은 결제대행사의 API를 이용하세요.
- 폼 유효성 검사를 구현할 때 정상 케이스(유효한 번호)와 오류 케이스(무효한 번호)를 모두 만들어 테스트하면 효율적입니다.
자주 묻는 질문
여담 ― 체크 디지트의 아버지, Hans Peter Luhn
신용카드 번호 끝자리에 있는 "체크 디지트"는 1954년 IBM 엔지니어 Hans Peter Luhn(한스 페터 룬)이 고안한 알고리즘으로 검증됩니다. 그는 이 공로로 1960년에 특허를 취득했지만, 지금은 특허가 만료되어 누구나 자유롭게 사용할 수 있는 공개 알고리즘이 되었습니다.
Luhn 알고리즘의 원리는 의외로 단순합니다. 카드 번호의 오른쪽 끝에서부터 한 자리씩 건너뛰며 숫자를 2배로 하고, 그 결과가 두 자리가 되면 각 자리를 더합니다(예: 8×2=16 → 1+6=7). 모든 자리를 합한 값이 10으로 나누어떨어지면 그 카드 번호는 형식상 유효하다고 판정됩니다.
이 알고리즘은 신용카드뿐 아니라 IMEI 번호(스마트폰 식별 번호)나 캐나다 사회보장번호 등 다양한 식별 번호의 오타 감지에도 응용되고 있습니다. 다만 Luhn 알고리즘은 어디까지나 "입력 실수를 감지"하기 위한 것으로, 그 카드 번호가 실제로 존재하는지 잔액이 있는지를 판정하는 것은 아닙니다.
카드 번호의 앞 6〜8자리는 "IIN(발급자 식별 번호)"이라고 불리며, 어느 국제 카드사・어느 발급 은행이 발행한 카드인지를 식별하는 정보가 담겨 있습니다. 본 도구의 카드사 판별 기능도 이 IIN 범위 패턴을 기반으로 동작합니다.