Clear Code 암호화 구현

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 "Clear Code Encryption"이라는 간단한 암호화 및 복호화 알고리즘을 구현하는 방법을 배우게 됩니다. 이 암호화 방식은 청나라 말기 중국의 초기 전신 통신 시스템에서 사용되었습니다.

👀 미리보기

## Example 1
numb = 1530; encryption_text = "0383"
## Example 2
numb = 0; encryption_text = "9853"
## Example 3
numb = 12345; encryption_text = None

🎯 과제

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

  • 암호화 방식과 그 기본 원리를 이해하는 방법
  • 암호화를 수행하기 위해 plain_code_encryption(numb) 함수를 구현하는 방법
  • 다양한 입력을 사용하여 암호화 함수를 테스트하는 방법
  • 사용자 입력을 처리하고 암호화 함수를 호출하는 방법

🏆 성과

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

  • "Clear Code Encryption" 방식과 그 역사적 맥락을 설명할 수 있습니다.
  • Python 을 사용하여 기본적인 암호화 및 복호화 알고리즘을 구현할 수 있습니다.
  • 다양한 입력 시나리오로 암호화 함수를 테스트하고 검증할 수 있습니다.
  • 사용자 입력과 출력을 암호화 스크립트에 통합할 수 있습니다.

암호화 방법 이해

이 단계에서는 "Clear Code Encryption" 프로젝트에서 사용되는 암호화 방식에 대해 배우게 됩니다.

암호화 방식은 다음과 같이 작동합니다.

  1. 평문 코드의 네 자리 숫자는 각각 암호화 키의 네 자리 숫자에 더해집니다.
  2. 각 숫자 덧셈의 경우, 합이 10 이상이면 10 을 생략하고 일의 자리 숫자만 유지합니다.
  3. 복호화 시에는 복호화 키의 네 자리 숫자를 뺀 비밀번호를 사용하여 평문 코드를 얻고 해당 텍스트를 찾습니다.

예를 들어, 평문 코드가 1530 이고 암호화 키가 9853 이라고 가정해 보겠습니다.

  1. 첫 번째 숫자 더하기: 1 + 9 = 10, 10 을 0 으로 처리합니다.
  2. 두 번째 숫자 더하기: 5 + 8 = 13, 10 을 생략하고 3 을 유지합니다.
  3. 세 번째 숫자 더하기: 3 + 5 = 8.
  4. 네 번째 숫자 더하기 (0 + 3 = 3).

최종 암호화된 텍스트는 "0383"입니다.

✨ 솔루션 확인 및 연습

plain_code_encryption(numb) 함수 구현

이 단계에서는 plain_code.py 파일에서 plain_code_encryption(numb) 함수를 구현합니다.

  1. 코드 편집기에서 plain_code.py 파일을 엽니다.
  2. plain_code_encryption(numb) 함수를 찾습니다.
  3. 다음 작업을 수행하도록 함수를 구현합니다.
    • 0 에서 9999 사이의 임의의 숫자 (0 과 9999 포함) 를 입력하고, 9853 을 더하여 4 자리 숫자 ( str 형식) 를 얻은 후 반환합니다.
    • 입력 숫자가 4 자리 미만인 경우, 누락된 자릿수를 0 으로 채웁니다. 예를 들어, 입력 숫자가 32 인 경우 0032 로 처리해야 합니다.
    • 같은 위치의 숫자를 더합니다. 합이 10 이상이면 10 을 생략하고 일의 자리 숫자만 유지합니다.
    • 입력 숫자가 0 에서 9999 사이가 아니면 None을 반환합니다.

다음은 plain_code_encryption(numb) 함수에 대한 완성된 코드입니다.

def plain_code_encryption(numb: int) -> str:
    if numb < 0 or numb > 9999:
        return None

    numb_str = str(numb).zfill(4)
    key_str = "9853"
    encryption_text = "".join(
        str((int(n) + int(k)) % 10) for n, k in zip(numb_str, key_str)
    )

    return encryption_text
✨ 솔루션 확인 및 연습

plain_code_encryption(numb) 함수 테스트

이 단계에서는 제공된 예제를 사용하여 plain_code_encryption(numb) 함수를 테스트합니다.

  1. 코드 편집기에서 plain_code.py 파일을 엽니다.
  2. 파일 끝에 다음 코드를 추가합니다.
if __name__ == "__main__":
    print(plain_code_encryption(1530))  ## Output: "0383"
    print(plain_code_encryption(0))     ## Output: "9853"
    print(plain_code_encryption(12345)) ## Output: None
  1. 파일을 저장하고 python3 plain_code.py 명령을 사용하여 스크립트를 실행합니다.
  2. 출력이 예상 결과와 일치하는지 확인합니다.
✨ 솔루션 확인 및 연습

사용자 입력 처리

이 단계에서는 스크립트를 수정하여 사용자 입력을 받아들이고, 사용자가 제공한 숫자로 plain_code_encryption(numb) 함수를 호출합니다.

  1. 코드 편집기에서 plain_code.py 파일을 엽니다.
  2. 이전 단계에서 추가한 코드를 찾아 다음 코드로 바꿉니다.
if __name__ == "__main__":
    txt = int(input())
    print(plain_code_encryption(txt))
  1. 파일을 저장하고 python3 plain_code.py 명령을 사용하여 스크립트를 실행합니다.
  2. 메시지가 표시되면 0 에서 9999 사이의 숫자를 입력하면 스크립트가 암호화된 텍스트를 출력합니다.

축하합니다! "Clear Code Encryption" 프로젝트를 완료했습니다. 암호화 방법을 구현하고 다양한 입력을 사용하여 테스트하는 방법을 배웠습니다.

✨ 솔루션 확인 및 연습

요약

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