Command Palette

Search for a command to run...

Luhn 알고리즘: 신용 카드 유효성 검사 작동 방식

Luhn 알고리즘: 신용 카드 유효성 검사 작동 방식

T
Toolz Team
|Sep 13, 2026|16 최소 읽기
Google 에서 Toolz.dev 를 선호합니다

보안 컬렉션의 일부입니다

신용카드 검증인

Luhn 체크섬에 대해 신용 카드 번호를 확인하고 카드 네트워크를 감지합니다. 형식만 유효하게 하며 은행에 절대 연락하지 않습니다.

신용카드 검증인를 사용하십시오

나는 짓는다 Toolz.dev그리고 그 전에 나는 WordPress 플러그인과 Laravel API 를 배송하는 데 수년을 보냈으며 그 중 몇 개는 지불을 받아야했습니다. 내가 작성한 첫 번째 체크 아웃 양식은 모든 잘못 입력 된 카드 번호를 지불 게이트웨이로 바로 보내고 반송되기를 기다렸습니다. 그것은 기술적으로 작동했지만 느리고 처음에는 결코 유효 할 수없는 숫자에 대한 게이트웨이 요청을 통해 불타 버렸습니다. 수정은 당황 스러울 정도로 작았습니다: 제출하기 전에 브라우저에서 Luhn 체크섬을 실행하십시오. 그 한 가지 변경 사항은 대부분의 오타를 즉시 잡았고 무의미한 API 호출의 흐름을 중단했습니다. 이 가이드는 그 수표,그 옆에 앉아있는 접두사 규칙 및 신용카드 검증인 메모리에서 다시 구현할 필요가 없도록 만들었습니다.

TL;DR: 신용 카드 유효성 검사기는 숫자가 실제 계정에 속하지 않고 구조적으로 올바른지 확인합니다. 그것은 두 개의 독립적 인 테스트를 실행합니다: ISO/IEC 7812-1 의 Luhn 체크섬,거의 모든 한 자리 오타와 인접 전치를 포착하고 각 network's 게시 된 발급자 범위에 대한 길이 및 접두사 검사. 숫자는 하나를 통과하고 다른 하나를 실패 할 수 있으므로 두 결과는 별도로보고됩니다. 브라우저에서 완전히 실행되므로 카드 번호가 업로드되지 않으며 카드에 돈이 있는지 여부를 결코 알 수 없습니다. 발행자 만이 그것을 알고 있습니다.

카드 번호가 유효하다는 것은 무엇을 의미합니까?

공식적으로 기본 계정 번호 또는 PAN인 결제 카드 번호는 임의의 숫자 문자열이 아닙니다. 그 구조는 다음과 같이 정의됩니다 ISO/IEC 7812. 처음 6~8 자리는 발행자 식별 번호,즉 IIN 으로,예전에는 은행 식별 번호 (BIN) 라고 불렸습니다. 그 자리는 네트워크와 발행 은행을 식별합니다. 그 이후 마지막에서 두 번째까지의 자리는 개별 계좌 식별자이며,맨 마지막 자리는 Luhn 알고리즘으로 계산된 수표 자릿수입니다.

그래서 "valid"는 두 개의 별도 의미를 가지며,그들을 분리하는 데 도움이됩니다. 첫 번째는 숫자가 Luhn 체크섬을 준수한다는 것입니다. 즉,검사 숫자가 숫자의 나머지 부분과 일치합니다. 두 번째는 숫자가 실제 카드 네트워크에 적합한 길이와 접두사를 가지고 있다는 것입니다. 숫자는 다른 조건이 아닌 하나의 조건을 만족시킬 수 있습니다. 4111 1111 1111 1112 visa 접두사와 Visa 길이가 있지만 Luhn 에 실패합니다. 오른쪽 검사 숫자로 끝나는 임의의 16 자리 문자열은 Luhn 을 통과하지만 네트워크가 소유하지 않은 접두사로 시작할 수 있습니다. 좋은 유효성 검사기는 두 가지 중 어느 것이 실패했는지 알려줍니다. 수정 사항이 각 경우에 다르기 때문입니다.

두 가지 확인 모두 할 수 없는 것은 카드가 진짜라고 말하는 것입니다. 구조적 유효성은 숫자의 모양에 관한 것이지 그 뒤에 있는 계정의 상태에 관한 것이 아닙니다. 계정이 존재하지 않거나,동결되었거나, 한도를 초과했거나,몇 년 전에 폐쇄되었을 수도 있습니다. 아는 유일한 시스템은 발행 은행이며,실시간 거래에서 승인 요청 중에 정확히 한 번 응답합니다. 브라우저 측 유효성 검사기가 수행하는 모든 작업은 해당 지점에 도달하기 전에 실행되는 저렴한 사전 필터입니다.

Luhn 알고리즘은 어떻게 작동합니까?

mod-10 알고리즘이라고도 불리는 Luhn 알고리즘은 1960 년 IBM 의 Hans Peter Luhn 에 의해 특허를 받았으며 현재 공개 도메인에 있습니다. 체크섬으로,그 전체 목적은 우발적 인 오류를 감지하는 것이지 보안을 제공하는 것이 아닙니다. 이렇게 작동합니다. 가장 오른쪽 숫자에서 시작하여 왼쪽으로 이동하면 두 번째 숫자를 두 배로 늘립니다. 두 배로 늘리면 9 보다 큰 숫자가 생성되면 9 를 뺍니다 (두 자리를 더한 것과 같습니다). 그런 다음 모든 숫자,두 배로 된 숫자 및 손길이 닿지 않은 숫자를 합산합니다. 총계가 10 으로 나누어지면 숫자가 통과합니다.

여기 체크온입니다 4111 1111 1111 1111, 오른쪽에서 왼쪽으로 작업합니다. 가장 오른쪽 숫자는 위치 1이며 두 배가 아닙니다. 두 번째 숫자를 두 배로 늘리면 1과 2의 집합이 제공됩니다. 두 개는 두 배의 위치에서 나옵니다. 모두 더하면 총합이 10의 배수에 도달하므로 숫자가 통과합니다. 한 자리를 바꾸면 합이 거의 항상 10의 배수가 되지 않습니다. 이것이 바로 수표를 유용하게 만드는 것입니다.

Luhn 의 값은 잡는 것에 있습니다. 그것은 모든 한 자리 오류를 감지합니다. 즉,어떤 한 자리 숫자가 잘못 입력되었음을 의미합니다. 또한 두 개의 인접한 자리,클래식 "I typed 21 instead of 12" mistake,when one known exception: it does not catch a swap of 09 그리고 90두 가지 모두 동일한 가중 합계에 매핑되기 때문입니다. 이는 진정한 사각지대이지만 드문 사각지대이며 Luhn이 암호화 보증이 아닌 체크섬인 이유입니다. 양식 유효성 검사의 경우 충분하며 본질적으로 인터넷의 모든 체크아웃 카드 필드 뒤에 있는 이유입니다.

카드 네트워크는 어떻게 감지되나요?

네트워크는 앞자리인 IIN 에서 읽습니다. 각 네트워크는 특정 접두사 범위를 소유하고 있으며,대부분은 전체 길이도 제한합니다. 유효성 검사기는 가장 길고 가장 구체적인 접두사를 먼저 일치시킵니다. 일부 범위는 겹치기 때문입니다. 확인하는 범위는 다음과 같습니다:

네트워크 로 시작합니다 유효한 길이 보안 코드
비자 4 X 1000 X 1000 X 1000 X 400 X 400 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 13, 16, 19 3 X 1000 X 1000 X 1000 X 100 X 100 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X
마스터카드 51-55, 2221-2720 16 3 X 1000 X 1000 X 1000 X 100 X 100 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X
아메리칸 익스프레스 34, 37 15 4 X 1000 X 1000 X 1000 X 400 X 400 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X 40 X
발견하다 6011, 65, 644-649, 622126-622925 16, 19 3 X 1000 X 1000 X 1000 X 100 X 100 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X
다이너스 클럽 300-305, 309, 36, 38-39 14, 16, 19 3 X 1000 X 1000 X 1000 X 100 X 100 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X
JCB 3528-3589 16-19 3 X 1000 X 1000 X 1000 X 100 X 100 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X
유니온페이 62 16-19 3 X 1000 X 1000 X 1000 X 100 X 100 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X
마에스트로 50, 56-69(선택됨) 12-19 3 X 1000 X 1000 X 1000 X 100 X 100 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X 30 X

겹치는 부분이 흥미로운 부분이고,그들을 잘못 이해하는 것은 순진한 탐정이 어떻게 불발하는가 하는 것입니다. 마스터카드는 를 추가했습니다 2221-2720 2017 년의 범위, 그래서 그 전에 쓰여진 발견자는 불명한 것과 같이 그 카드를 보고합니다. 발견은 의 좁은 조각을 소유합니다 62 공간, 622126 통해 622925, UnionPay가 나머지 부분을 소유하고 있습니다 62따라서 테스트한 순서에 따라 a가 결정됩니다 6221 카드는 Discover 또는 UnionPay 로 읽습니다. 유효성 검사기는 넓은 UnionPay 접두사 앞에 특정 Discover 창을 테스트하여 둘 다 올바르게 착륙합니다. American Express 는 형식화 코드를 트립하는 창입니다. 왜냐하면 일반적인 4 개 그룹이 아닌 4-6-5 로 그룹화 된 15 자리 숫자를 사용하고 뒷면의 3 자리 CVV 가 아닌 4 자리 보안 코드 (앞면에 인쇄 된 CID) 를 사용하기 때문입니다.

신용카드 유효성 검사기 사용 방법

도구는 의도적으로 간단합니다. 숫자를 붙여 넣고 결과를 읽습니다. 제출 버튼이 없으며 구성 할 것이 없습니다.

1 단계: 숫자를 입력하십시오

카드 번호를 입력하거나 필드에 붙여 넣습니다. 공백과 대시는 무시됩니다. 그래서 4111-1111-1111-1111, 4111 1111 1111 1111, 그리고 4111111111111111 모두 동일하게 검증됩니다. 실제 입력이 모든 형식으로 도착하기 때문에 중요합니다: 스프레드 시트에서 복사하거나,카드를 읽거나,테스트 픽스처에서 가져옵니다.

2 단계: 평결을 읽으십시오

결과의 상단은 숫자가 유효한지 여부를 명확하게 알려주고,그렇지 않은 경우 이유를 명명합니다. 아래에는 두 개의 검사가 별도로 표시됩니다: Luhn 체크섬이 통과했는지,길이가 감지된 네트워크와 일치하는지 여부를 구분하여 보는 것이 포인트입니다. Luhn 을 통과하지만 길이에 실패하는 숫자는 거의 항상 숫자가 삭제되거나 추가되었음을 의미하는 반면 Luhn 에 실패하지만 길이가 올바른 숫자는 일반적으로 한 숫자가 단순히 잘못되었음을 의미합니다.

3 단계: 감지된 네트워크를 확인합니다

이 도구는 접두사로부터 식별한 네트워크,네트워크가 허용하는 길이,보안 코드의 길이를 보여줍니다. 양식을 작성하고 올바른 카드 로고를 표시하려는 경우 또는 3 자리 또는 4 자리 CVV 를 기대해야 하는지 알아야 할 때 단독으로 유용합니다.

4 단계: 포맷되거나 마스크된 번호를 복사합니다

네트워크가 인쇄하는 방식으로 그룹화된 숫자를 복사하거나 마지막 4자리를 제외한 모든 숫자를 숨기는 마스크 버전을 복사할 수 있습니다. 마스크된 양식은 로그, 스크린샷 및 지원 티켓에 원하는 형식입니다. 전체 PAN을 저장하거나 표시하는 것은 정확히 사람들이 규정 준수에 어려움을 겪는 종류이기 때문입니다.

검증은 어디에 적합하며 어디에서 중지됩니까?

정직한 프레이밍은 검증자가 게이트가 아니라 필터라는 것입니다. 명백한 쓰레기를 싸게 거부하는 프로세스의 전면에 속하며 다운스트림의 증거로 절대 신뢰할 수 없습니다. 체크아웃 양식에서 Luhn 클라이언트 측을 실행하면 사용자가 지불을 완료하기 전에 타이핑을 완료하는 순간 오타를 표시할 수 있습니다. 이는 더 나은 경험이며 게이트웨이로의 운명적인 왕복 여행을 절약할 수 있습니다. 데이터 파이프라인에서 카드 모양 필드의 유효성을 검사하는 것은 손상된 행이 질식할 시스템에 도달하기 전에 손상된 행을 포착합니다. 테스트 제품군에서는 유효성 검사를 통과하는 숫자가 필요하므로 양식이 프로덕션에서 작동하는 방식으로 동작합니다. 이는 게시된 테스트 번호의 목적입니다.

그것이하지 않는 것은 승인이며,이것은 무뚝뚝하게 말할 가치가 있습니다. 유효한 번호는 워킹 카드가 아닙니다. 도구는 잔액을 확인할 수 없으며 계정이 존재하는지 확인할 수 없으며 은행과 관련이 없습니다. 또한 실제 계정에 묶인 숫자를 생성 할 수 없으며 생성해서는 안됩니다. 제공되는 샘플 번호는 지불 제공자가 게시 한 표준 테스트 값으로 Luhn-valid 이며 개발자가 양식을 행사할 수 있도록 네트워크 검사를 정확하게 통과하지만 충전 할 수있는 것은 아무것도 없습니다. 실제 지불에 닿는 것을 구축하는 경우 카드 충전 가능 여부에 대한 실제 유효성 검사는 지불 프로세서를 통해 서버 측에서 이루어지며 카드 데이터 자체는 토큰 화되어야하므로 자체 시스템은 원시 PAN 을 저장하지 않습니다. 클라이언트 측 유효성 검사는 볼트가 아닌 정중한 현관입니다.

서버에서 유효성을 검사하는 것과 어떻게 비교됩니까?

둘 다 자리가 있고,다른 질문에 답합니다. Luhn 과 접두사 검사를 통한 클라이언트 측 유효성 검사는 즉각적이고 비공개적이며,사용자가 제출하기 전에 피드백을 제공하며,비용은 전혀 들지 않습니다. 그 한계는 구조에 대해서만 알고 있다는 것입니다. 지불 프로세서를 통한 서버 측 유효성 검사는 카드가 실제적이고 청구 가능하다는 것을 확인할 수있는 유일한 방법이지만 네트워크 요청 비용이 들고 인증 시도 당 비용이 들 수 있으며 사용자가 제출하기로 약속 한 후에 발생합니다. 합리적인 디자인은 둘 다 사용합니다: 브라우저는 오타와 모양 오류를 무료로 포착하고 서버는 사용자가 지불 할 때 중요한 하나의 검사를 수행합니다. 클라이언트 검사를 건너 뛰면 양식이 느려지는 것처럼 느껴집니다; 서버 검사를 건너 뛰면 실제로 아무 것도 검증하지 못했습니다. 이런 종류의 작업을 위해 더 넓은 키트를 조립하는 경우 개발자 생산성 도구 검거는 그와 함께 사는 경향이 있는 다른 유틸리티를 다룹니다.

관련 도구 및 추가 읽기

카드 유효성 검사기는 혼자 이동하는 경우가 거의 없습니다. 폼이나 데이터 파이프라인을 강화할 때 일반적으로 식별자를 생성하고 값을 해싱하며 다른 종류의 입력도 확인합니다. The 해시 생성기 값의 모양을 검증하기보다는 값의 지문을 채취해야 할 때 도달하는 것입니다 암호 강도 검사기 동일한 "를 브라우저에서 측정하고,어디서나 보내지 마십시오" credentials 에 원리. 네트워크 측에서는 IP 서브넷 계산기 계산대가 실행되는 인프라를 구축하는 모든 사람을 위한 동반 도구입니다.

더 넓은 맥락을 위해 데이터 개인 정보 보호 및 온라인 도구 가이드는 민감한 검사를 실행하는 것이 클라이언트 측에서 중요한 이유를 설명합니다 코딩 도구 가이드 유효성 검사기를 developer's daily 키트의 나머지 컨텍스트에 넣습니다. Toolz.dev 의 모든 것이 브라우저에서 실행되며,이는 카드 번호를 붙여 넣는 것이 안전한 전체 이유입니다: 장치를 떠나지 않습니다.

자주 묻는 질문

Luhn 알고리즘은 무엇을 확인합니까?

Luhn 알고리즘은 숫자가 잘못 입력되지 않았음을 확인하는 mod-10 체크섬입니다. 오른쪽에서 두 번째 자리마다 두 배가되고,9 위의 결과에서 9 를 빼고,모든 자리수를 합산하고,총계가 10 으로 나누어질 수 있음을 확인합니다. 모든 한 자리 오류와 인접한 두 자리 수의 거의 모든 스왑을 잡아내지만,보안 기능이 아닌 체크섬이며,카드가 진짜라는 것을 증명할 수 없습니다.

유효한 번호는 카드가 작동한다는 것을 의미합니까?

아니요. 유효한 번호는 숫자가 구조적으로 정확하다는 것을 의미할 뿐이므로 체크섬이 통과하고 길이가 네트워크와 일치합니다. 계정이 존재하는지,잔고가 있는지 또는 여전히 활성 상태인지는 실제 인증 중에 카드 발급자에 의해서만 확인될 수 있습니다. 구조적 유효성은 사용 가능한 카드의 증거가 아닌 사전 필터입니다.

번호에서 카드 브랜드는 어떻게 감지되나요?

브랜드는 첫 번째 자리인 발급자 식별 번호부터 읽습니다. 비자는 4 로 시작하고 마스터카드는 51-55 또는 2221-2720,아메리칸 익스프레스는 34 또는 37 등으로 시작합니다. 또한 각 네트워크는 특정 전체 길이만 허용하므로 유효성 검사기는 접두사와 길이를 함께 확인하고 일치한 네트워크를 보고합니다.

이 도구에 카드 번호를 입력하는 것이 안전합니까?

예. 번호는 브라우저에서 완전히 처리되며 업로드,로그 또는 전송되지 않습니다. 유효성 검사기가 연결되지 않은 상태에서 계속 작동하기 때문에 인터넷에서 연결을 끊으면 확인할 수 있습니다. 즉,필요하지 않은 곳에 실제 카드 번호를 붙여 넣는 것을 피하고 개발을 위해 게시 된 테스트 번호를 선호해야합니다.

왜 진짜 카드는 Luhn을 통과하지만 길이 확인에 실패합니까?

이는 일반적으로 입력하는 동안 숫자가 삭제되거나 추가되었음을 의미합니다. Luhn 체크섬은 잘못된 길이의 숫자에 대해 우연히 통과할 수 있으므로 도구는 감지된 네트워크에 대해 독립적으로 길이를 확인합니다. 전체 숫자를 다시 입력하면 두 검사가 함께 통과되어야 합니다.

테스트 카드 번호는 무엇이며 왜 존재합니까?

등의 테스트 카드 번호 4111 1111 1111 1111 는 지불 공급자에 의해 출판된다 그래서 개발자는 체크 아웃 양식을 행사할 수 있습니다. 그들은 Luhn-유효하고 네트워크 검사를 통과하므로 양식은 생산에서와 같이 정확하게 동작하지만,그들은 실제 계정에 매핑하고 결코 청구 할 수 없습니다. 그들은 당신이 그렇지 않으면 실제 카드를 입력 유혹 할 것이다 어디서나 사용하는 올바른 것입니다.

CVV 와 카드 번호의 차이점은 무엇입니까?

카드 번호는 계정을 식별하는 긴 기본 계정 번호입니다. CVV,CVC 또는 CID 는 짧은 보안 코드이며,대부분의 네트워크에서는 세 자리,American Express 에서는 네 자리이며 번호와 별도로 인쇄됩니다. 이 도구는 카드 번호의 유효성만 검사합니다; 거래 중에 발급자가 확인하는 보안 코드는 검사하지 않습니다.

이 검증인이 작동하는 신용카드를 생성할 수 있나요?

아니요. 입력한 숫자만 검사하며,실제 계정에 연결된 숫자를 생성할 방법이 없습니다. 제공하는 샘플 번호는 실제 계정에 도달하지 않는 표준 게시된 테스트 값입니다. 실제 카드에 대한 숫자를 생성하는 것은 구조적 검증자가 할 수 있는 일이 아니며 이 도구가 시도하는 일도 아닙니다.


Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!