# A씨는 인터넷으로 카드 결제를 하다 문득 궁금한 점이 떠올랐다. 결제창에서 카드사를 선택하고 카드번호만 입력했을 뿐인데 카드번호가 잘못됐다며 오류창이 뜬 것이다. 카드 결제 대행업체는 어떻게 이름과 주민등록번호도 없이 카드번호만으로 카드번호의 진위를 확인할 수 있었을까?
정답은 카드번호 속에 있다. 검증값이라고 불리는 카드번호 맨 뒷번호로 카드번호의 진위를 파악할 수 있다.
카드번호는 통상 16자리다. 앞의 15개의 숫자를 특정한 공식에 대입해 16번째 자리의 숫자를 산출하게 되는 것이다.
즉 앞에 15개 숫자가 동일한데 마지막 자리만 다른 카드번호는 존재하지 않는다. 인터넷 카드 결제 대행업체에서도 이 검증값을 통해 카드사에 데이터를 전송하기 전 카드번호의 진위 여부를 스스로 판단할 수 있다.
이렇게 일련의 숫자 중 하나를 검증값으로 둬서 위변조를 차단하는 방식은 널리 쓰이고 있다. 주민등록번호도 맨 마지막 숫자가 검증값이다. 은행의 통장 계좌번호도 마찬가지다.
카드번호의 검증값을 구하는 공식은 생각보다 간단하다. ‘1234-5678-9012-3456’이라는 카드번호가 있다고 하자. 홀수번째 숫자 1·3·5·7·9·1·3·5에 2를 곱한다. 5, 7, 9처럼 2를 곱해 두 자리수가 나오면 각 자릿수의 합해 5, 9로 환산한다. 이렇게 해서 나온 숫자를 짝수번째 숫자와 모두 합한다. ‘2+2+6+4+1+6+5+8+9+0+2+2+6+4+1+6’와 같은 방식으로 더해 나온 숫자가 10의 배수여야 한다. 이 카드번호의 경우 64가 나오기 때문에 잘못된 카드번호로 인식된다.
카드 뒷면 서명란에 새겨진 CVV(또는 CVC) 번호도 임의로 숫자가 아니라 검증번호다. 해당 카드번호를 입력하면 반드시 특정한 CVV 번호가 산출돼야 한다. CVV 번호 산출공식은 보안 문제로 일반에 알려져 있지 않다.
검증번호 뿐만 아니라 카드번호 16자리에는 모두 나름의 의미가 있다.
제일 첫 번째 숫자는 해외 결제 브랜드를 나타낸다. 4로 시작되는 카드 번호는 비자, 5는 마스터, 3은 JCB나 다이너스, 6은 중국의 은련 카드다. 9는 세계 공통적으로 국내 전용카드에만 사용되는 번호다.
그 다음 숫자들은 발급 카드사, 개인·법인카드, 회원 등급 등을 나타낸다.
예를 들어 신한카드에서 발급하는 국내 전용 카드의 경우 9410-61은 고객 등급이 실버이고, 9410-62는 골드 등급이다.
비씨카드에서 발급하는 은행계 카드는 5, 6번째 자리의 숫자가 발급 은행을 나타낸다. 대부분의 비씨카드가 4481(체크카드), 4906(신용카드), 5387, 5388로 시작한다. 그 다음 숫자가 03이면 기업은행, 20이면 우리은행, 23이면 SC제일은행, 27이면 씨티은행에서 발급받은 카드다.