2024. 3. 30. 21:09ㆍcs및 소프트스킬/자료구조 및 알고리즘
1. 룬 알고리즘(Luhm Algorithm)
- mod 가 10인 알고리즘으로 10을 나눌 때 나머지 값이 0일 경우 true, 0이 아닌 경우 false 로 표현한다.
- IBM 과학자인 Hans Peter Luhn 이 만든 알고리즘 론, Luhn을 따서 만든 알고리즘
2. 룬 알고리즘과 신용카드 유효성 검사
신용카드 번호가 15자리 or 16자리로 구성 되어져 있을 것이다. 하지만 15자리와 16자리의 의미가 담겨 있다. 신용카드의 유효성 체크를 위한 조건은 결국 룬 알고리즘을 통해 설계가 되어져 있다고 설명 하겠다. 이걸로 간단하게 카드 유효성 검사가 가능하다.
3. 룬 알고리즘의 원리
1. 카드 번호 중 가장 마지막 자리를 제외하고 번호 순서를 역순으로 배치한다.
2. 이후, 카드 마지막 번호를 제외하고, 홀 수 번째 번호들은 2를 곱한 후 9보다 큰 경우 9를 빼준다.
3. 모든 카드의 숫자들을 다 합하여 10을 나눌 때 나머지 값이 0인지 체크한다.
4. 나머지 값이 0일 경우 유효성 통과, 그렇지 않은 경우 유효성 체크 불합격!!
4. 룬 알고리즘의 예시
3782 - 8224631 - 0005
init) 3 7 8 2 8 2 2 4 6 3 1 0 0 0 5
1) 3 7 8 2 8 2 2 4 6 3 1 0 0 0 5 // 마지막 번호는 일단 제껴두기
2) 0 0 0 1 3 6 4 2 2 8 2 8 7 3 5 // 마지막 번호를 제외한 역순 배치
3) 0 0 0 1 6 6 8 2 4 8 4 8 14 3 5 // 홀수 자리에는 2를 곱한다.
4) 0 0 0 1 6 6 8 2 4 8 4 8 5 3 5 // 9보다 큰 숫자는 9를 빼기
5) 0 + 0 + 0 + 1 + 6 + 6 + 8 + 2 + 4 + 8 + 4 + 8 + 5 + 3 + 5 = 60
6) 60 mod 10 = 0 // true