[python] PyCrypto를 이용한 비대칭키 암호화 방법
비대칭키 암호화는 암호화와 복호화에 각각 다른 키를 사용하는 암호화 방법입니다. 이 방법은 데이터의 기밀성과 무결성을 보장하는 데에 매우 유용합니다. 이 글에서는 PyCrypto 라이브러리를 사용하여 Python에서 비대칭키 암호화 방법을 사용하는 방법에 대해 알아보겠습니다.
PyCrypto 라이브러리
PyCrypto는 Python에서 암호화 및 해시 기능을 제공하는 라이브러리입니다. 이 라이브러리를 사용하면 강력한 암호화 기능을 사용할 수 있으며, 대칭키와 비대칭키 암호화를 모두 지원합니다.
비대칭키 생성
비대칭키 암호화를 사용하기 위해서는 먼저 공개키와 개인키를 생성해야 합니다. 공개키는 암호화에 사용되며, 개인키는 복호화에 사용됩니다. PyCrypto는 RSA 알고리즘을 사용하여 이러한 키 쌍을 생성할 수 있습니다.
from Crypto.PublicKey import RSA
# 키 쌍 생성
key_pair = RSA.generate(2048)
# 공개키 추출
public_key = key_pair.publickey().export_key()
# 개인키 추출
private_key = key_pair.export_key()
위의 예제에서는 2048비트 크기의 키 쌍을 생성하고, 생성된 키 쌍에서 공개키와 개인키를 추출하고 있습니다.
암호화 및 복호화
키 쌍을 생성했다면, 이제 데이터를 암호화하고 복호화할 수 있습니다. PyCrypto는 암호화에는 공개키를, 복호화에는 개인키를 사용합니다.
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# 공개키로 암호화
def encrypt(public_key, message):
public_key = RSA.import_key(public_key)
encryptor = PKCS1_OAEP.new(public_key)
encrypted_message = encryptor.encrypt(message)
return encrypted_message
# 개인키로 복호화
def decrypt(private_key, encrypted_message):
private_key = RSA.import_key(private_key)
decryptor = PKCS1_OAEP.new(private_key)
decrypted_message = decryptor.decrypt(encrypted_message)
return decrypted_message
# 암호화 예제
message = b"Hello, World!"
encrypted_message = encrypt(public_key, message)
# 복호화 예제
decrypted_message = decrypt(private_key, encrypted_message)
위의 예제에서는 encrypt
함수를 사용하여 공개키로 데이터를 암호화하고, decrypt
함수를 사용하여 개인키로 데이터를 복호화하는 방법을 보여주고 있습니다.
결론
PyCrypto를 사용하면 Python에서 비대칭키 암호화를 쉽게 사용할 수 있습니다. 이 라이브러리를 활용하여 데이터의 기밀성을 보장하고 암호화 통신을 구현할 수 있습니다.