Luhn 알고리즘 검사기

Luhn은 검증 숫자만 확인하며 카드 활성 여부는 확인하지 않습니다.

Luhn 알고리즘(ISO/IEC 7812-1)은 신용카드 번호, IMEI 기기 식별자, 캐나다 SIN, 미국 NPI 등 여러 번호 체계를 한 자릿수 입력 오류로부터 보호하는 체크섬입니다. 숫자 문자열을 붙여넣으면(공백과 하이픈은 무시됨) 해당 번호가 유효한지 판정하고, 배가와 합산 단계를 차례로 보여주므로 원한다면 직접 손으로 확인할 수도 있습니다.

Luhn 검사를 계산하는 방법

  1. 1

    숫자가 아닌 문자 제거

    공백, 하이픈, 마침표는 제거되며 0~9 숫자만 계산합니다.

  2. 2

    오른쪽에서 두 번째 자리마다 두 배로 만들기

    끝에서 두 번째 자리부터 시작해 한 자리씩 건너뛰며 두 배로 만듭니다.

  3. 3

    두 배로 만든 각 값의 자릿수 더하기

    두 배로 만든 값이 14이면 1 + 4 = 5를 더합니다. 이는 10 이상인 두 배 값에서 9를 빼는 것과 같습니다.

  4. 4

    모든 결과 값 합산하기

    두 배로 만들어 자릿수를 더한 값과 그대로 둔 자릿수를 모두 더합니다.

  5. 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자리)에 맞춰 표준화되어 있습니다. 이 검사기는 길이에 제한을 두지 않습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다