파이썬 문자열 비교 하기 – 비밀번호 체크 로직 만들기

파이썬 문자열 비교

안녕하세요. 저의 코딩 블로그에 찾아와주셔서 감사합니다. 오늘은 파이썬 문자열 비교와 관련해서 중점적으로 다뤄보려고 합니다. 바로 비밀번호 검증하는 로직을 만들고, 또 추가로 파일의 확장자를 구분하는 방법에 대해서 실습 예제와 함께 소개해드리려고 합니다.

우선 이번에 다뤄볼 비밀번호 체크 로직 만들기에 들어가기 앞서 비밀번호의 개념에 대해서 인지를 하고 가야합니다. 비밀번호를 설정할 때의 중요한 점은 강력한 보안을 위해서는 특정한 규칙을 준수해야 하는 것 입니다. 이번 예제에서는 파이썬을 사용하여 비밀번호의 강도를 측정하고 주어진 규칙에 부합하는지를 확인하는 방법에 대해 다룰 것입니다.

비밀번호 규칙 정의

강력한 비밀번호를 생성하기 위해서는 몇 가지 규칙을 따라야 합니다. 대표적으로 이런 규칙들이 있습니다

  • 최소한의 길이 요구
  • 대문자, 소문자, 숫자, 특수문자의 혼합 사용
  • 일반적인 단어나 패턴 사용 금지
  • 이전에 사용된 비밀번호와의 차이 유지

비밀번호 검증 함수 작성

비밀번호가 주어진 규칙을 따르는지 확인하기 위해 검증 함수를 작성해야 합니다. 아래의 코드는 주어진 비밀번호가 최소 길이를 만족하고 다양한 문자 유형을 포함하는지를 확인합니다.

import re

def validate_password(password):
    # 최소 8자 이상의 길이를 요구
    if len(password) < 8:
        return False

    # 대문자, 소문자, 숫자, 특수문자의 혼합 여부 확인
    if not re.search(r"[A-Z]", password) or \
       not re.search(r"[a-z]", password) or \
       not re.search(r"\d", password) or \
       not re.search(r"\W", password):
        return False

    return True

비밀번호 규칙 확인하기

이제 작성한 검증 함수를 사용하여 비밀번호가 주어진 규칙을 충족하는지 확인할 수 있습니다. 사용자에게 직접 비밀번호를 입력받고 해당 비밀번호가 규칙에 부합하는지를 출력합니다.

def main():
    password = input("비밀번호를 입력하세요: ")

    if validate_password(password):
        print("비밀번호가 안전합니다.")
    else:
        print("비밀번호가 안전하지 않습니다. 더 강력한 비밀번호를 설정해주세요.")

if __name__ == "__main__":
    main()

향후 개선 방향

지금 보여드린 비밀번호 검증 함수는 기본적인 보안 수준을 제공하지만 더 강력한 보안을 위해서는 추가적인 기능을 추가할 수 있습니다. 예를 들어서 비밀번호 사전에 있는 단어를 사용하지 않도록 검증하거나 생년월일이나 휴대전화 번호와 같이 특정한 패턴을 포함하지 않도록 제한하는 등의 기능을 개선할 수 있습니다.

파이썬을 활용한 파일 확장자 검증 코드 작성하기

두번째 예제로는 파이썬을 통해서 문자열 비교 후 파일 확장자를 검증해내는 예제를 준비해보았습니다.

파일 확장자는 파일의 유형을 식별하는 데 중요한 역할을 합니다. 그러나 사용자가 잘못된 확장자를 사용할 수도 있습니다. 이럴 경우 파일을 열거나 실행하는 데 문제를 일으킬 수 있습니다. 그렇기 때문에 파이썬을 사용하여 파일 확장자의 유효성을 검사하고 확인하는 방법에 대해 알아보겠습니다.

파일 확장자의 역할

파일 확장자는 파일의 종류나 형식을 나타냅니다 .txt는 텍스트 파일을 나타내고, .jpg는 JPEG 이미지 파일을 나타냅니다. 올바른 확장자를 사용하여 파일을 식별하고 처리하는 것은 중요합니다.

파일 확장자 검증 함수 작성

파일 확장자가 올바른지 확인하기 위해 검증 함수를 작성해야 합니다. 이 함수는 주어진 파일명이 특정 확장자와 일치하는지를 확인합니다. splitext 함수를 통해서 파일명의 확장자를 추출하고 특정한 확장자와 비교하여 일치하는지를 확인합니다.

import os

def validate_file_extension(filename, valid_extensions):
    ext = os.path.splitext(filename)[1][1:]  # 파일명에서 확장자 추출
    if ext in valid_extensions:
        return True
    else:
        return False

위 코드에서 os.path.splitext() 함수는 파일명을 기준으로 확장자를 추출합니다. 그 다음 [1] 인덱스를 통해 확장자 부분만 선택하고 [1:]로 시작하는 점(.)을 제거하여 확장자만 추출합니다.

올바른 확장자 확인하기

이제 작성한 검증 함수를 사용하여 파일 확장자가 올바른지 확인할 수 있습니다. 제가 준비한 코드와 함께보겠습니다. 이렇게 사용자로부터 파일명을 입력받고 해당 파일의 확장자가 올바른지를 출력합니다.

def main():
    filename = input("파일명을 입력하세요: ")
    valid_extensions = ['txt', 'jpg', 'png', 'pdf']  # 허용된 확장자 리스트

    if validate_file_extension(filename, valid_extensions):
        print("올바른 파일 확장자입니다.")
    else:
        print("올바르지 않은 파일 확장자입니다.")

if __name__ == "__main__":
    main()

위 코드에서 valid_extensions 리스트에는 허용된 확장자들이 포함되어 있습니다. 사용자로부터 입력받은 파일명의 확장자가 이 리스트에 포함되어 있는지를 검증하여 올바른 확장자인지를 판단합니다.

지금까지 파이썬을 사용하여 파일 확장자의 유효성을 검사하고 확인하는 방법에 대해 알아보았습니다. 감사합니다.