Python을 사용하여 신용 카드 번호 확인
소개
이 기사의 목적은 Python을 사용하여 간단한 신용 카드 유효성 검사기를 작성하는 방법을 설명하는 것입니다. 카드 번호를 확인하는 데 사용되는 알고리즘을 Luhn 알고리즘이라고 합니다.
Luhn의 알고리즘 정보
Luhn 알고리즘은 1954년 독일 컴퓨터 과학자 Hans Peter Luhn이 개발했습니다. "모듈러스 10 알고리즘"으로도 알려진 이 알고리즘은 신용 카드 번호를 포함한 다양한 식별 번호의 유효성을 검사하는 데 사용되는 체크섬 공식입니다.
대부분의 신용 카드와 많은 정부 식별 번호는 유효한 숫자를 잘못 입력되었거나 잘못된 숫자와 구별하는 간단한 방법으로 알고리즘을 사용합니다. 암호학적으로 안전한 해시 함수가 아닙니다. 대신 악의적인 공격을 방어하기보다는 우발적인 오류를 탐지하기 위해 만들어졌습니다.
알고리즘 작동 방식
←
)에서 왼쪽으로 이동하여 짝수 인덱스에서 모든 숫자의 값을 두 배로 늘립니다. Python을 사용하여 Luhn의 알고리즘 구현
아래 솔루션은 확인할 신용 카드 번호를 나타내는 'credit_number'라는 문자열 인수를 사용합니다. 아래 의사 코드는 각 코드 줄에 대해 수행된 단계를 설명하는 데 도움이 됩니다.
의사 코드
def validate_credit_card(card_number: str) -> bool:
"""This function validates a credit card number."""
# 1. Change datatype to list[int]
card_number = [int(num) for num in card_number]
# 2. Remove the last digit:
checkDigit = card_number.pop(-1)
# 3. Reverse the remaining digits:
card_number.reverse()
# 4. Double digits at even indices
card_number = [num * 2 if idx % 2 == 0
else num for idx, num in enumerate(card_number)]
# 5. Subtract 9 at even indices if digit is over 9
# (or you can add the digits)
card_number = [num - 9 if idx % 2 == 0 and num > 9
else num for idx, num in enumerate(card_number)]
# 6. Add the checkDigit back to the list:
card_number.append(checkDigit)
# 7. Sum all digits:
checkSum = sum(card_number)
# 8. If checkSum is divisible by 10, it is valid.
return checkSum % 10 == 0
if __name__ == '__main__':
# American Express
print(validate_credit_card('378282246310005')) # True
print(validate_credit_card('371449635398431')) # True
# American Express Corporate
print(validate_credit_card('378734493671000')) # True
# Australian BankCard
print(validate_credit_card('5610591081018250')) # True
# Diners Club
print(validate_credit_card('30569309025904')) # True
print(validate_credit_card('38520000023237')) # True
# Discover
print(validate_credit_card('6011111111111117')) # True
print(validate_credit_card('6011000990139424')) # True
# MasterCard
print(validate_credit_card('5555555555554444')) # True
print(validate_credit_card('5105105105105100')) # True
# Visa
print(validate_credit_card('4111111111111111')) # True
print(validate_credit_card('4012888888881881')) # True
# Invalid Credit Card Number
print(validate_credit_card('7762888103111881')) # False
print(validate_credit_card('37612555227841800')) # False
이것은 Python을 사용하여 간단한 신용 카드 유효성 검사기를 구현하는 방법에 대한 하나의 솔루션입니다. credit card validator을 사용하여 번호의 유효성을 확인할 수 있습니다.
소프트웨어 응용 프로그램에 Luhn 기반 식별 번호 확인을 더 쉽게 포함할 수 있도록 다운로드할 수 있는 사용 가능한 Python 라이브러리가 있습니다.
결론
이 기사에서는 Luhn 알고리즘과 Python을 사용하여 신용 카드 유효성 검사기를 구현하는 방법에 대해 설명했습니다. 알고리즘이 어떻게 작동하는지 더 잘 이해하고 Python을 사용하여 자신의 신용 카드 번호 유효성 검사기를 작성할 수 있기를 바랍니다. 이 글이 도움이 되셨거나 질문이 있으시면 댓글을 남겨주세요.
GitHub에서 사용 가능한 코드
Reference
이 문제에 관하여(Python을 사용하여 신용 카드 번호 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/seraph776/validate-credit-card-numbers-using-python-37j9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)