전체 도구 ↗

카드번호 검증 (Luhn)

카드번호 형식을 검증합니다.

광고

설명

Luhn 체크섬으로 카드번호의 형식 유효성을 검증합니다. 입력값은 서버로 전송되지 않으며 실제 결제 가능 여부와는 무관합니다.

광고

관련 도구

Luhn 알고리즘은 신용카드·체크카드 번호가 올바른 형식인지 수학적으로 검증하는 표준 방식입니다. 개발 중 테스트용 카드번호를 만들거나, 입력 폼에서 오타를 걸러낼 때 이 도구 하나로 즉시 확인할 수 있습니다. 번호는 서버로 전송되지 않으므로 실제 카드 정보를 입력해도 외부로 유출되지 않습니다.

사용 방법

카드번호 16자리(또는 Amex 15자리 등)를 입력창에 붙여넣거나 직접 입력합니다. 공백이나 하이픈이 포함돼 있어도 자동으로 제거하고 검증을 수행합니다. 결과는 '유효' 또는 '유효하지 않음'으로 즉시 표시됩니다. 유효하다고 표시되더라도 그 번호가 실제로 발급된 카드임을 의미하지는 않으며, 형식이 수학적으로 올바른지만 확인합니다.

Luhn 알고리즘이란

Luhn 알고리즘은 1954년 IBM 과학자 Hans Peter Luhn이 고안한 체크섬 공식입니다. 번호 오른쪽 끝에서 홀수 번째 자리는 그대로 두고, 짝수 번째 자리를 2배 한 뒤 9를 초과하면 9를 뺍니다. 그렇게 변환된 모든 자릿수의 합이 10의 배수이면 유효한 번호입니다. Visa, Mastercard, AMEX, 국내 신용카드 등 대부분의 카드사가 이 방식을 채택하고 있습니다. 이 알고리즘은 우연한 오타(숫자 하나 잘못 입력, 인접 숫자 순서 바꿈 등)를 90% 이상 걸러낼 수 있습니다.

개발자 테스트 활용 팁

결제 시스템을 개발할 때는 실제 카드번호 대신 Luhn 검증을 통과하는 테스트 번호를 사용해야 합니다. 대표적인 테스트 번호로는 Visa 계열 4111111111111111, Mastercard 계열 5500005555555559 등이 있으며 이 도구로 미리 검증할 수 있습니다. 프론트엔드 입력 폼에 Luhn 검증을 추가하면 서버 요청 전에 명백한 오타를 차단해 불필요한 API 호출을 줄일 수 있습니다. 단, Luhn 통과 여부만으로 결제 가능 여부를 판단해서는 안 되며, 실제 승인은 카드사 API를 통해서만 확인할 수 있습니다.

자주 묻는 질문

유효하다고 나왔는데 실제로 사용 가능한 카드번호인가요?
아닙니다. Luhn 검증은 번호의 수학적 형식만 확인합니다. 실제 발급된 카드인지, 유효 기간이 지나지 않았는지, 잔액이 있는지는 카드사 시스템만 알 수 있습니다.
카드번호를 입력해도 정보가 유출되지 않나요?
이 도구는 브라우저 안에서만 동작하며 입력값을 서버로 전송하지 않습니다. 네트워크 탭에서 직접 확인할 수 있습니다.
Amex(아멕스) 카드 15자리도 검증되나요?
네. Luhn 알고리즘은 자릿수에 관계없이 동일하게 적용되므로 15자리 Amex 번호도 정확하게 검증합니다.
공백이나 하이픈을 포함한 번호를 그대로 붙여넣어도 되나요?
네, '4111 1111 1111 1111' 또는 '4111-1111-1111-1111' 형태로 붙여넣어도 숫자만 추출해서 검증합니다.
Luhn 알고리즘을 통과하는 번호를 임의로 만들 수 있나요?
원리상 가능합니다. 첫 15자리를 임의로 정한 뒤, Luhn 합이 10의 배수가 되도록 마지막 체크 자리를 계산하면 됩니다. 개발 테스트 목적으로만 사용해야 하며, 실제 금융 거래에 사용하는 것은 불법입니다.

개인정보처리방침

이 도구로 무엇을 확인하나요

카드번호 검증 도구는 입력한 신용·체크카드 번호가 Luhn 알고리즘(모듈로 10) 규칙에 맞는지를 브라우저 안에서 즉시 계산해 줍니다. 카드 앞면의 13~19자리(대부분 16자리) 숫자를 넣으면, 마지막 한 자리인 검증숫자(check digit)까지 포함한 배열이 수식에 맞는지 판정합니다. 계산은 화면에서 바로 이뤄지고 번호가 서버로 전송되지 않으므로, 결제 폼에 옮겨 적은 번호에 오타가 없는지 부담 없이 확인할 수 있습니다. 다만 이 도구는 "숫자 배열이 규칙에 맞는가"만 봅니다. 실제 발급된 카드인지, 유효기간·잔액·한도가 살아 있는지는 전혀 알 수 없습니다.

Luhn 계산이 작동하는 방식

Luhn은 사람이 손으로 옮겨 적을 때 나는 실수, 특히 한 자리 오타와 이웃한 두 숫자를 바꿔 쓴 경우를 잡아내도록 만든 검사식입니다. 순서는 이렇습니다.

  1. 맨 오른쪽(검증숫자)부터 왼쪽으로 이동하며, 오른쪽에서 두 번째 자리부터 한 칸 건너 한 번씩 숫자를 2배로 만듭니다.
  2. 2배 한 값이 9를 넘으면 9를 빼줍니다(예: 8×2=16 → 16−9=7). 이는 두 자리 숫자의 각 자리를 더한 것과 같습니다.
  3. 이렇게 처리한 모든 숫자를 전부 더합니다.
  4. 합계를 10으로 나눈 나머지가 0이면 유효, 아니면 오류로 판정합니다.

예를 들어 4539 1488 0343 6467은 위 절차대로 더하면 합계가 10의 배수가 되어 통과합니다.

이럴 때 씁니다

결제 폼에 카드번호를 입력하기 전 오타를 1차로 거를 때, 개발자가 결제·회원 화면의 프런트단 유효성 검사 로직이 올바로 동작하는지 확인할 때, 테스트 환경에서 실제 카드 대신 형식만 맞는 더미 번호를 만들 때 유용합니다. 앞자리(BIN)로 카드 브랜드를 짐작할 수도 있는데, 4로 시작하면 Visa, 51~55·2221~2720이면 Mastercard, 34·37이면 Amex 계열로 알려져 있습니다. 다만 브랜드 표시는 참고용이며, 발급 여부와는 별개입니다.