목차
- 파이썬 사용자에게 파일 경로 입력받기 input 함수 예제 이전 포스팅 참고 학습
- 파이썬 RSA 개인키, 공개키 쌍 생성 예제 이전 포스팅 참고 학습
- C, C++ Openssl 라이브러리 활용 RSA 암복호화 예제 이전 포스팅 참고 학습
- 파이썬 RSA 평문 문자열 암호화 예제
- 파이썬 RSA 암호문 복호화 예제
파이썬 사용자에게 파일 경로 입력받기 input 함수 예제 이전 포스팅 참고 학습
이전 포스팅에서 input 함수를 사용하여 사용자로부터 파일 경로를 입력받는 방법을 확인하였습니다. 오늘 예제에서는 평문의 문자열을 사용자가 입력하여 해당 문자열을 RSA 암복호화 하는 예제를 작성해보겠습니다.
이를 위해 아직 파이썬에서 외부 입력 함수인 input에 대해 잘 모르신다면 아래를 참고해주세요.
2023.08.18 - [Python] - [Python] 파이썬 사용자에게 입력받기 예제(input)
파이썬 RSA 개인키, 공개키 쌍 생성 예제 이전 포스팅 참고 학습
이전에 다룬 내용에서는 cryptography 라이브러리를 사용하여 RSA 개인키와 공개키 쌍을 생성하는 방법에 대해 학습했습니다. 개인키와 공개키 생성의 기본 원리를 이해하고, 암호화와 복호화를 위해 어떻게 코드를 작성해야하는지 예제를 통해 알아보도록하겠습니다.
따라서 아직 파이썬에서 RSA 키 쌍 생성 방법을 모르신다면 아래 링크를 참고해주세요.
2023.08.21 - [Python] - [Python] 파이썬 RSA 키 쌍 생성 및 파일 저장 예제(개인키, 공개키)
C, C++ Openssl 라이브러리 활용 RSA 암복호화 예제 이전 포스팅 참고 학습
RSA 암복호화를 C나 C++에서 Openssl 라이브러리를 활용하여 어떻게 수행하는지 알아보는 내용을 이전에 포스팅한 적이 있습니다. RSA 암호화의 원리와 Openssl 라이브러리를 통해 암호화와 복호화를 어떻게 수행하는지에 대해 알고싶으시다면 아래 이전 포스팅을 참고해주세요.
2023.07.31 - [C] - [C/C++] Openssl 활용 RSA 암호화 및 복호화 예제
파이썬 RSA 평문 문자열 암호화 예제
아래는 앞서 생성한 RSA 공개키를 사용하여 문자열을 암호화하는 예제입니다. pycryptodome 라이브러리를 활용하여 암호화 함수를 호출하고, 암호화된 결과를 화면에 출력하는 예제입니다.
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
def generate_keys():
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
return private_key, public_key
def encrypt_message(public_key, message):
rsa_key = RSA.import_key(public_key)
cipher = PKCS1_OAEP.new(rsa_key)
encrypted_message = cipher.encrypt(message.encode())
return encrypted_message
private_key, public_key = generate_keys()
print("Generated Private Key:")
print(private_key.decode())
print("\nGenerated Public Key:")
print(public_key.decode())
message = input("\nEnter the message to encrypt: ")
encrypted_message = encrypt_message(public_key, message)
print("\nEncrypted Message:")
print(encrypted_message)
파이썬 RSA 암호문 복호화 예제
마지막으로, 암호화된 문자열을 개인키를 사용하여 복호화하는 예제입니다. 암호화된 문자열을 입력받고 pycryptodome 라이브러리를 활용하여 복호화 함수를 호출하는 예제입니다.
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
def generate_keys():
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
return private_key, public_key
def encrypt_message(public_key, message):
rsa_key = RSA.import_key(public_key)
cipher = PKCS1_OAEP.new(rsa_key)
encrypted_message = cipher.encrypt(message.encode())
return encrypted_message
def decrypt_message(private_key, encrypted_message):
rsa_key = RSA.import_key(private_key)
cipher = PKCS1_OAEP.new(rsa_key)
decrypted_message = cipher.decrypt(encrypted_message).decode()
return decrypted_message
private_key, public_key = generate_keys()
print("Generated Private Key:")
print(private_key.decode())
print("\nGenerated Public Key:")
print(public_key.decode())
message = input("\nEnter the message to encrypt: ")
encrypted_message = encrypt_message(public_key, message)
print("\nEncrypted Message:")
print(encrypted_message)
decrypted_message = decrypt_message(private_key, encrypted_message)
print("\nDecrypted Message:")
print(decrypted_message)