개발자 도구

신용카드 번호 검증기|Luhn 알고리즘・카드사 판별

신용카드 번호를 입력하면 Luhn 알고리즘으로 체크 디지트를 검증하고 Visa・Mastercard・Amex 등의 카드사를 자동으로 판별합니다. 폼 유효성 검사 구현 확인에도 유용합니다.

[[ labels.client_side_note ]]


[[ labels.format_error ]]
[[ labels.sample_label ]]:
[[ labels.no_input ]]

[[ 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를 이용하세요.
  • 폼 유효성 검사를 구현할 때 정상 케이스(유효한 번호)와 오류 케이스(무효한 번호)를 모두 만들어 테스트하면 효율적입니다.

자주 묻는 질문

아니요, 막을 수 없습니다. 본 도구는 Luhn 알고리즘을 이용한 형식 검사만 수행하며, 그 카드가 실제로 존재하는지, 정지되었는지, 잔액이 충분한지는 판정할 수 없습니다. 실제 승인 확인에는 결제대행사의 인증 시스템이 필요합니다.

입력한 번호는 서버로 전송되지 않고 모든 계산이 브라우저 내 JavaScript에서 이루어집니다. 다만 동작 확인이 목적이라면 실제 번호 대신 샘플 버튼으로 제공되는 테스트 번호 사용을 권장합니다.

1954년 IBM의 Hans Peter Luhn이 고안한 오류 감지 알고리즘입니다. 카드 번호의 오른쪽 끝에서부터 한 자리씩 건너뛰며 2배로 하고, 각 자리의 합이 10의 배수가 되면 형식상 유효하다고 판정합니다. 대부분의 오타를 감지할 수 있습니다.

카드 번호 앞부분 몇 자리(IIN: 발급자 식별 번호)와 자릿수 조합으로 판별합니다. 예를 들어 Visa는 "4"로 시작하며 13・16・19자리, Mastercard는 "51〜55" 등으로 시작하며 16자리, JCB는 "3528〜3589"로 시작하며 16자리인 것처럼 공개된 규칙에 기반합니다. 자세한 대응표는 페이지 하단의 "지원 브랜드 및 판별 조건"을 참고해 주세요.

아니요. Luhn 알고리즘 통과는 "형식상 모순이 없다"는 것을 확인할 뿐입니다. 실재하지 않는 임의의 숫자열이라도 마지막 한 자리만 조정하면 Luhn 검사를 통과시킬 수 있습니다.
ツールくん

여담 ― 체크 디지트의 아버지, Hans Peter Luhn

신용카드 번호 끝자리에 있는 "체크 디지트"는 1954년 IBM 엔지니어 Hans Peter Luhn(한스 페터 룬)이 고안한 알고리즘으로 검증됩니다. 그는 이 공로로 1960년에 특허를 취득했지만, 지금은 특허가 만료되어 누구나 자유롭게 사용할 수 있는 공개 알고리즘이 되었습니다.

Luhn 알고리즘의 원리는 의외로 단순합니다. 카드 번호의 오른쪽 끝에서부터 한 자리씩 건너뛰며 숫자를 2배로 하고, 그 결과가 두 자리가 되면 각 자리를 더합니다(예: 8×2=16 → 1+6=7). 모든 자리를 합한 값이 10으로 나누어떨어지면 그 카드 번호는 형식상 유효하다고 판정됩니다.

이 알고리즘은 신용카드뿐 아니라 IMEI 번호(스마트폰 식별 번호)나 캐나다 사회보장번호 등 다양한 식별 번호의 오타 감지에도 응용되고 있습니다. 다만 Luhn 알고리즘은 어디까지나 "입력 실수를 감지"하기 위한 것으로, 그 카드 번호가 실제로 존재하는지 잔액이 있는지를 판정하는 것은 아닙니다.

카드 번호의 앞 6〜8자리는 "IIN(발급자 식별 번호)"이라고 불리며, 어느 국제 카드사・어느 발급 은행이 발행한 카드인지를 식별하는 정보가 담겨 있습니다. 본 도구의 카드사 판별 기능도 이 IIN 범위 패턴을 기반으로 동작합니다.