방프리

21.04.29 룬 알고리듬 (Luhn Algorithm) 본문

기타 프로그래밍

21.04.29 룬 알고리듬 (Luhn Algorithm)

방프리 2021. 4. 29. 21:40

체크섬 알고리듬을 공부하다가 체크섬이 사용되는 대표적인? 예에서 룬 알고리듬에 대해 배웠다.

입력된 신용카드가 정상적인지 간단하게 확인하기 위한 쉬운 알고리듬이라고 한다. 

구현방법은 간단하다

1. 입력된 카드 번호를 배열로 가정한 후 배열의 끝에서부터 더하기 시작한다.

2. 짝수 위치에 있는 숫자는 x2를 한다.

3. 곱한 숫자가 10을 넘어가면 10의 자리와 1의 자리 수를 더한다.

4. 끝까지 더한 값이 10의 배수면 정상, 아니라면 비정상

내 나름대로 한 번 C#으로 짜보았다.

public static void LuhnChecksum(int[] array)
 {
    int length = array.Length - 1;
    int sum = 0;
    for(int i = length; i >= 0; i--)
    {
    	if (i % 2 == 0)
    	{
    	    int twicePos = array[i] * 2;
    	    if (twicePos > 10)
    	        twicePos = (twicePos / 10) + 
                		   (twicePos % 10)	
    	    sum += twicePos;
    	}
    	else
    	{
    	    int temp = array[i];
    	    sum += temp;
    	}
    }

    if (sum % 10 == 0)
    	Console.Write("This card can use");
    else
        Console.Write("This card can't use");
}

진짜로 그런지 내 체크카드와 신용 카드 두 개로 테스트 해보았다.

체크카드는 신한, 국민이였고

신용카드는 신한으로만 테스트를 진행했다.

웃긴게 체크카드는 모두 다 사용 불가능한 카드로 나왔고 신용카드만 저 알고리듬이 통했다.

체크카드는 다른 방식으로 구현되어야 하는건지 아니면 번호 구축 자체가 다른건지는 모르겠지만

여튼 그렇다.

 

'기타 프로그래밍' 카테고리의 다른 글

23.05.07 각 플랫폼 별 Redirection Login  (0) 2023.05.07
RGB555와 RGB565에 관하여  (0) 2020.03.26
Comments