시저 암호화 구현

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 널리 알려진 간단한 암호화 기법인 시저 암호 (Caesar Cipher) 를 구현하는 방법을 배우게 됩니다. 시저 암호는 치환 방식을 사용하여 메시지의 영어 문자를 알파벳 순서에서 N 위치 뒤 또는 앞에 있는 문자로 대체합니다.

👀 미리보기

## Example 1
text = "python"; encryption_text = "ravjqp"
## Example 2
text = "pyThon"; encryption_text = "raVjqp"
## Example 3
text = "Python31"; encryption_text = "Ravjqp31"
## Example 4
text = None; encryption_text = None

🎯 과제

이 프로젝트에서는 다음을 배우게 됩니다:

  • 프로젝트 환경을 설정하고 필요한 파일을 만드는 방법
  • 문자열의 모든 영어 문자를 오른쪽으로 2 칸 이동시키는 시저 암호화 함수를 구현하는 방법
  • 영어 문자, 비영어 문자 및 null 값을 포함한 다양한 유형의 입력을 처리하는 방법
  • 다양한 입력 예제를 사용하여 시저 암호화 함수를 테스트하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 시저 암호화 기법의 기본 원리를 이해합니다.
  • 표준 또는 타사 라이브러리를 사용하지 않고 Python 에서 시저 암호화 함수를 구현합니다.
  • 문자열 조작, 문자 인코딩 및 조건부 로직에 대한 기술을 개발합니다.
  • 프로젝트 요구 사항을 충족하는지 확인하기 위해 코드를 테스트합니다.

시저 암호화 구현

이 단계에서는 시저 암호화 함수를 구현합니다.

  1. caesar_cipher.py 파일을 엽니다.

  2. 원하는 기능을 달성하기 위해 caesar_encryption(text) 함수를 수정합니다:

    • 문자열을 입력받아 문자열의 모든 영어 문자를 오른쪽으로 2 칸 이동시킵니다.
    • 반각 영어 문자만 변환하고, 다른 내용은 변경하지 않습니다.
    • 문자의 대소문자는 변경되지 않아야 합니다. 예를 들어, A 는 C 로, b 는 d 로 변환됩니다.
  3. """TODO""" 주석을 다음 코드로 바꿉니다:

def caesar_encryption(text: str) -> str:
    if text is None:
        return None
    encryption_text = ""
    for char in text:
        if char.isalpha() and char.isascii():
            if char.islower():
                encryption_text += chr((ord(char) - ord("a") + 2) % 26 + ord("a"))
            else:
                encryption_text += chr((ord(char) - ord("A") + 2) % 26 + ord("A"))
        else:
            encryption_text += char
    return encryption_text

이 코드는 프로젝트 요구 사항에 설명된 대로 시저 암호화 알고리즘을 구현합니다.

✨ 솔루션 확인 및 연습

시저 암호화 테스트

이 단계에서는 몇 가지 예제 입력을 사용하여 시저 암호화 함수를 테스트합니다.

  1. caesar_cipher.py 파일의 끝에 다음 코드를 추가합니다:
if __name__ == "__main__":
    test_input_text = input()
    print(caesar_encryption(test_input_text))
  1. caesar_cipher.py 파일을 저장합니다.
  2. 터미널을 열고 /home/labex/project 디렉토리로 이동합니다.
  3. 다음 명령을 사용하여 caesar_cipher.py 스크립트를 실행합니다:
python3 caesar_cipher.py
  1. 몇 가지 테스트 입력 텍스트를 입력하고 암호화된 출력을 확인합니다.
✨ 솔루션 확인 및 연습

요구 사항 검증

이 단계에서는 구현이 프로젝트 요구 사항을 충족하는지 확인합니다.

  1. 프로젝트 요구 사항을 검토하고 caesar_encryption(text) 함수가 다음을 수행하는지 확인합니다:

    • 문자열을 입력받아 문자열의 모든 영어 문자를 오른쪽으로 2 칸 이동시킵니다.
    • 반각 영어 문자만 변환하고, 다른 내용은 변경하지 않습니다.
    • 문자의 대소문자를 유지합니다. 예를 들어, A 는 C 로, b 는 d 로 변환됩니다.
  2. 제공된 참조 예제를 사용하여 함수를 테스트합니다:

## Example 1
text = "python"; encryption_text = "ravjqp"
## Example 2
text = "pyThon"; encryption_text = "raVjqp"
## Example 3
text = "Python31"; encryption_text = "Ravjqp31"
## Example 4
text = None; encryption_text = None
  1. 함수가 모든 테스트 케이스를 올바르게 처리하는지 확인합니다.

축하합니다! 시저 암호 프로젝트를 완료했습니다. 질문이 있거나 추가 지원이 필요한 경우 주저하지 말고 문의하십시오.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.