Python을 사용한 아핀 암호 암호화

Python Eul Sayonghan Apin Amho Amhohwa



목차 주제:

  1. 소개
  2. 전제 지식
  3. 아핀 암호 방정식
  4. Python을 사용한 아핀 암호 암호화
  5. 개념의 증거
  6. 결론
  7. 자주 묻는 질문(FAQ)

Affine 암호는 단일 알파벳 암호 범주에 속하는 특정 종류의 대체 암호를 나타냅니다. 일반 텍스트의 각 문자를 고정된 세 위치만큼 이동하는 더 유명한 Caesar 암호와 달리 Affine 암호는 두 개의 키(a 및 b)를 사용합니다. 키 선택에는 특별한 고려가 필요합니다.

전제 지식

오늘의 주제를 깊이 이해하려면 다음 개념을 이해해야 합니다.







  • 최대 공약수(GCD) 및 공소수
  • 모듈러 연산

이러한 개념은 'Affine Cipher Mathematical Approach'라는 제목의 이전 기사에서 자세히 설명되었습니다.



아핀 암호 방정식

Affine 암호 암호화 공식부터 시작하겠습니다.



E(x) = (a.x + b) mod m
이전의) x 알파벳 인덱스의 암호화를 나타냅니다.
'특수' 첫 번째 키의 인덱스 값
엑스 일반 문자의 인덱스 값
두 번째 키의 인덱스 값(추가 시프트 값)
모드 m 총 26개의 알파벳을 모듈로 연산


대체 이미지 및 캡션 : 아핀 암호 방정식





예를 들어, 'BIMANDO' 일반 텍스트를 7과 13 키로 암호화하려고 합니다. 다음 테이블 인덱스를 사용하여 먼저 일반 텍스트를 해당 숫자로 변환합니다.


대체 이미지 및 캡션 : 색인 번호 매기기



'BIMANDO' 일반 텍스트는 '1 8 12 0 13 3 14'의 색인 번호로 변환됩니다.


대체 이미지 및 캡션 : 일반 텍스트를 색인 번호 매기기 값으로 변환

그런 다음 방정식 계산을 적용하고 결과는 다음과 같습니다.


대체 이미지 및 캡션 : 아핀 암호화

따라서 'BIMANDO' 일반 텍스트는 키 7과 13이 있는 Affine 암호를 사용하여 암호화되어 'URTNAIH'가 됩니다.

Python을 사용한 아핀 암호 암호화

이제 여러 단락이 포함된 기밀 메시지를 보내고 싶다고 가정해 보겠습니다. 수작업으로 Affine 암호암호를 수행하는 것은 많은 노력과 시간이 소요되고, 계산을 잘못할 확률도 높죠? 따라서 Affine Cipher 암호화 프로세스를 자동화하는 프로그램이 필요합니다. 다음은 Python 프로그램을 만드는 단계별 프로세스입니다.

1. 필수 라이브러리 가져오기
우리 프로그램은 명령줄 인수 구문 분석, 문자열 작업 및 운영 체제 관련 기능을 위해 각각 argparse, 문자열 및 os와 같은 필수 모듈을 가져오는 것으로 시작됩니다.

수입 인수
수입
수입

2. 알파벳 매핑 정의
그런 다음 알파벳을 소문자 영어 문자의 문자열로 정의합니다. 이는 나중에 암호화 과정에서 문자를 매핑하는 데 사용됩니다.

알파벳 = . ascii_소문자

3. 아핀 암호 암호화 기능
이것이 우리 프로그램의 핵심 기능입니다. 입력 텍스트와 두 개의 키 'a'와 'b'를 가져와 텍스트의 구조를 유지하면서 Affine 암호 암호화를 텍스트에 적용합니다.

데프 affine_cipher_encryption ( 텍스트 , , ) :
암호화_텍스트 = ''
~을 위한 ~에 텍스트:
만약에 숯. 낮추다 ( ) ~에 알파벳:
만약에 숯. 만찬 ( ) :
암호화_텍스트 + = 문자 ( ( ( ㅏ * ( 단어 ( 숯. 낮추다 ( ) ) - 97 ) + 비 ) % 26 ) + 65 )
또 다른 :
암호화_텍스트 + = 문자 ( ( ( ㅏ * ( 단어 ( ) - 97 ) + 비 ) % 26 ) + 97 )
또 다른 :

4. 조건부 메인체크
이 블록코드에서 메인 프로그램으로 실행되고 있는지 확인해보세요. 스크립트 및 해당 인수에 대한 설명으로 인수 구문 분석기를 설정합니다. 필수 인수는 텍스트 파일 입력의 경로뿐입니다. 출력 경로를 지정하지 않으면 '_encrypted'가 추가된 입력 파일 이름에 기본값을 설정하려고 합니다. 'keys' 인수의 경우 'a,b' 형식으로 지정하려고 합니다. 하지만 설정하면 기본값은 5와 8입니다.

만약에 __이름__ == '__기본__' :
파서 = argparse. 인수파서 ( 설명 = '텍스트 파일의 아핀 암호 암호화' )
파서 . add_argument ( '입력 파일' , 돕다 = '입력 텍스트 파일의 경로' )
파서 . add_argument ( '-케이' , '--키' , 유형 = str , 기본 = '5.8' , 돕다 = ''a,b' 형식의 아핀 암호용 키' )
인수 = 파서 . 구문 분석_인수 ( )

, = 지도 ( 정수 , 인수. 열쇠 . 나뉘다 ( ',' ) )

~와 함께 열려 있는 ( 인수. 입력 파일 , '아르 자형' ) ~처럼 파일 :
텍스트 = 파일 . 읽다 ( )

# 입력 파일 경로에서 파일 이름을 추출합니다.
입력_파일 이름 , 확대 = . . 분할 ( 인수. 입력 파일 )
default_output_file = 입력_파일명 + '_암호화됨' + 확장

# 아핀 암호를 사용하여 텍스트를 암호화합니다.
암호화_텍스트 = affine_cipher_encryption ( 텍스트 , , )

# 암호화된 텍스트를 새 파일에 쓰기
~와 함께 열려 있는 ( default_output_file , '안에' ) ~처럼 파일 :
파일 . 쓰다 ( 암호화_텍스트 )

마지막으로 암호화 기능이 완료되면 프로그램은 입력 파일과 동일한 파일 확장자로 출력을 저장합니다.

이제 “affine_cipher.py”에 저장하세요. 이제 다음 명령을 입력하여 프로그램을 실행하십시오.

파이썬 affine_cipher. 파이 -시간

오류가 발견되지 않으면 출력은 다음 이미지와 같습니다.


대체 이미지 및 캡션 : Affine Cipher Python 프로그램

개념의 증거

다음과 같은 'message.txt' 이름의 기밀 메시지가 있는데 이를 회원들에게 방송하고 싶습니다.


대체 이미지 및 캡션 : 일반 텍스트

따라서 키 3과 7을 사용하여 Affine 암호를 사용하여 이 메시지를 암호화하기 전에 만든 프로그램을 사용합니다. 명령은 다음과 같습니다.

파이썬 affine_cipher. 파이 메시지. txt -케이 , 7


대체 이미지 및 캡션 : Affine Cipher Python 프로그램

눈 깜짝할 사이에 암호화된 메시지가 성공적으로 생성되어 “message_encrypted.txt”에 저장됩니다. 메시지가 어떻게 보이는지 확인해 보겠습니다.


대체 이미지 및 캡션 : 아핀 암호문

보시다시피 메시지가 뒤섞여 있습니다. 암호화 방법과 그 키를 아는 회원만이 메시지를 해독할 수 있습니다.

직접 시도해 보세요

GitHub 페이지에서 이 프로그램 소스 코드를 다운로드하세요. https://github.com/bimando/Affine-Cipher .

결론

결론적으로 단일알파벳 대체암호의 일종인 Affine 암호암호 방식은 두 개의 키를 활용하여 보안성을 강화하므로 키 선택 시 세심한 고려가 요구된다. 아핀 암호의 복잡성을 이해하려면 최대 공약수(GCD), 공소수, 모듈러 산술과 같은 개념을 이해하는 것이 필수적입니다.

Affine 암호 방정식 E(x) = (a.x + b) mod m은 'a'와 'b'가 키를 나타내고 'x'가 일반 텍스트 문자의 색인을 나타내는 암호화를 위한 기본 도구 역할을 합니다. Affine 암호 암호화 프로세스를 위한 자동화된 Python 프로그램의 구현은 대규모 암호화 작업을 효율적으로 간소화하는 것으로 입증되었습니다. 이 프로그램에는 라이브러리 가져오기, 알파벳 매핑, 암호화 기능, 입력 및 출력 경로에 대한 명령줄 인수 구문 분석 등의 주요 기능이 통합되어 있습니다. 특히, 스크립트는 원활한 암호화 프로세스를 용이하게 하기 위해 키 및 출력 파일 이름에 대한 기본 설정을 활성화합니다.

자주 묻는 질문(FAQ)

Q1: 아핀 암호란 무엇이며, 카이사르 암호와 어떻게 다른가요?

A1: Affine 암호는 암호화를 위해 'a'와 'b'라는 두 개의 키를 사용하는 일종의 단일 알파벳 대체 암호입니다. 대조적으로, 카이사르 암호는 평문의 각 문자에 대해 세 위치의 고정 이동을 활용합니다.

Q2. Affine 암호를 이해하기 위한 전제 조건은 무엇입니까?

A2: 아핀 암호를 철저하게 이해하려면 최대 공약수(GCD), 공소수, 모듈러 산술 등의 개념을 이해하는 것이 중요합니다.

Q3: Python에서 Affine 암호를 사용하여 메시지를 어떻게 암호화할 수 있나요?

A3: Affine 암호 암호화 프로세스를 자동화하려면 기사에 설명된 Python 프로그램을 활용할 수 있습니다. 이 프로그램은 대규모 텍스트 입력을 효율적으로 암호화하여 암호화 절차를 단순화합니다. 이 문서에서는 라이브러리 가져오기, 알파벳 매핑 정의, 암호화 기능 생성, 입력 및 출력 경로에 대한 명령줄 인수 구문 분석에 대한 단계별 지침을 제공합니다.