[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에서 비대칭키 암호화를 쉽게 사용할 수 있습니다. 이 라이브러리를 활용하여 데이터의 기밀성을 보장하고 암호화 통신을 구현할 수 있습니다.

참고 자료