소개
RSA는 대표적인 공개키 암호화 알고리즘 중 하나로, 데이터를 안전하게 전송하거나 보관할 때 사용됩니다. 이번 글에서는 Python의 PyCrypto 라이브러리를 사용하여 RSA 암호화와 복호화를 구현하는 방법에 대해 알아보겠습니다.
PyCrypto 설치
먼저, PyCrypto를 설치해야 합니다. 다음 명령어를 사용하여 PyCrypto 패키지를 설치할 수 있습니다.
pip install pycrypto
RSA 키 생성
RSA 암호화를 사용하기 위해서는 첫 번째로 RSA 키 쌍을 생성해야 합니다. 공개키로 암호화를 수행하고, 개인키로 복호화를 수행하기 위해 필요합니다.
from Crypto.PublicKey import RSA
# RSA 키 쌍 생성
def generate_key_pair():
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
return private_key, public_key
위 코드에서 generate_key_pair()
함수를 호출하면 RSA 키 쌍이 반환됩니다. 이때 private_key
는 개인키, public_key
는 공개키를 나타냅니다.
암호화 및 복호화
RSA 암호화에서는 공개키를 사용하여 데이터를 암호화하고, 개인키를 사용하여 암호문을 복호화합니다.
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# 데이터 암호화
def encrypt(data, public_key):
key = RSA.import_key(public_key)
cipher = PKCS1_OAEP.new(key)
ciphertext = cipher.encrypt(data)
return ciphertext
# 암호문 복호화
def decrypt(ciphertext, private_key):
key = RSA.import_key(private_key)
cipher = PKCS1_OAEP.new(key)
data = cipher.decrypt(ciphertext)
return data
위 코드에서 encrypt()
함수를 호출하면 데이터를 암호화한 암호문이 반환되고, decrypt()
함수를 호출하면 암호문을 복호화한 데이터가 반환됩니다. 이때 public_key
는 공개키, private_key
는 개인키를 나타냅니다.
예시
암호화와 복호화를 실제로 사용해보는 예시를 살펴보겠습니다.
private_key, public_key = generate_key_pair()
message = b"Hello, World!"
# 데이터 암호화
ciphertext = encrypt(message, public_key)
print("암호문: ", ciphertext)
# 암호문 복호화
decrypted_message = decrypt(ciphertext, private_key)
print("복호화된 데이터: ", decrypted_message)
위 코드를 실행하면 데이터를 암호화하여 암호문을 생성한 후, 이를 다시 복호화하여 원래 데이터를 얻을 수 있습니다.
마무리
이번 글에서는 Python의 PyCrypto 라이브러리를 사용하여 RSA 암호화와 복호화를 구현하는 방법에 대해 알아보았습니다. RSA는 안전한 데이터 전송 및 보관을 위한 대표적인 암호화 알고리즘이므로, 필요한 경우에는 이를 적절히 활용하여 보안 강화에 기여할 수 있습니다.