룬 알고리즘이란 — 신용카드 번호 검증 원리
카드번호를 한 자리 잘못 눌렀는데 결제 화면이 곧바로 "번호를 확인하세요"라고 막아준 적 있나요? 그 1차 거름망이 바로 룬(Luhn) 알고리즘입니다. 서버에 묻지 않고도 번호의 모양만 보고 명백한 오타를 잡아내는 간단한 체크섬 검산법이죠. 어떻게 동작하는지, 그리고 무엇까지만 알 수 있는지 정리했습니다.
룬 알고리즘이 하는 일
룬 알고리즘은 숫자열 끝에 붙은 체크 숫자(check digit)를 이용해 전체 번호가 일관성 있는지 검산합니다. 사람이 긴 번호를 옮겨 적을 때 가장 흔한 실수 — 한 자리를 잘못 적거나, 이웃한 두 숫자를 뒤바꿔 적는 경우 — 를 거의 다 잡아냅니다. 결과는 "통과 / 불통과" 둘 중 하나일 뿐, 번호의 의미를 해석하지는 않습니다.
계산 절차 따라가기
- 끝에서 두 번째 자리부터 한 칸씩 건너뛰며 그 자리 숫자를 2배 합니다.
- 2배 한 값이 9를 넘으면 그 두 자리 숫자를 더하거나(예: 14 → 1+4=5), 똑같이 9를 뺍니다(14 − 9 = 5).
- 건드리지 않은 나머지 자리는 그대로 두고, 모든 숫자를 전부 더합니다.
- 합이 10의 배수면 유효, 아니면 어딘가 잘못된 번호입니다.
예시로 4539 1488 0343 6467을 검산하면 아래 표처럼 됩니다.
| 처리 | 대상 | 결과 |
|---|---|---|
| 한 칸 걸러 2배 | 끝에서 2,4,6…번째 자리 | 9 넘으면 −9 보정 |
| 나머지 자리 | 그대로 | 변동 없음 |
| 전체 합 | 모든 자리 더하기 | 80 → 10의 배수 → 유효 |
어디에 쓰이나
- 신용·체크카드 번호 — 결제·가입 화면에서 입력 즉시 오타를 거르는 가장 흔한 용도.
- IMEI(휴대폰 식별번호) — 마지막 한 자리가 룬 체크 숫자입니다.
- 일부 국가의 식별번호 등 사람이 손으로 옮겨 적는 긴 숫자열 전반.
알 수 있는 것과 없는 것
아닙니다. 룬 알고리즘은 번호가 '형식상 올바른 모양'인지만 확인하는 검산법일 뿐입니다. 실제로 발급된 카드인지, 정지·해지되지 않았는지, 잔액이나 한도가 남았는지는 전혀 알 수 없습니다. 그런 정보는 카드사 시스템에 조회해야만 확인됩니다. 룬 검증은 결제 전에 명백한 오타를 미리 걸러 불필요한 요청을 줄이는 1차 거름망이라고 이해하면 됩니다.
신용카드·체크카드 번호가 가장 흔하고, IMEI(휴대폰 식별번호)나 일부 국가의 주민·사업자 식별번호처럼 사람이 손으로 옮겨 적는 긴 숫자열에도 쓰입니다. 한 자리를 잘못 적거나 인접한 두 숫자를 바꿔 적는 흔한 실수를 자동으로 잡아낼 수 있어, 입력 단계에서 오류를 빨리 발견하는 용도로 널리 사용됩니다.
실제 카드번호는 민감정보이므로 신뢰할 수 없는 곳에 함부로 입력하지 않는 것이 안전합니다. 룬 검증 자체는 브라우저 안에서 수학 계산만으로 끝나므로 서버로 보내지 않는 도구라면 위험이 작지만, 그래도 원리를 익힐 때는 예시 번호를 쓰는 편이 좋습니다. 도구상자의 검증기는 입력값을 전송하지 않고 브라우저에서만 처리합니다.