[python] PyCrypto를 사용하여 공개키 암호화하기

공개키 암호화는 암호화된 데이터를 사용자들과 안전하게 공유하기 위한 방법입니다. 이를 위해 PyCrypto 라이브러리를 사용할 수 있습니다. PyCrypto는 Python에서 암호화와 관련된 다양한 기능을 제공하는 강력한 라이브러리입니다. 이번 예제에서는 PyCrypto를 사용하여 공개키로 암호화하는 방법을 알아보겠습니다.

PyCrypto 설치하기

먼저 PyCrypto를 설치해야 합니다. 다음 명령어를 사용하여 PyCrypto를 설치할 수 있습니다.

pip install pycrypto

공개키 생성하기

공개키를 사용하여 암호화를 수행하기 전에 공개키를 생성해야 합니다. 다음 예제 코드를 사용하여 공개키를 생성할 수 있습니다.

from Crypto.PublicKey import RSA

# 2048비트 RSA 키 쌍 생성
key = RSA.generate(2048)

# 공개키 저장
public_key = key.publickey().exportKey()
with open('public_key.pem', 'wb') as f:
    f.write(public_key)

# 비밀키 저장
private_key = key.exportKey()
with open('private_key.pem', 'wb') as f:
    f.write(private_key)

위 예제 코드는 2048비트의 RSA 키 쌍을 생성하고, 생성된 공개키와 비밀키를 각각 ‘public_key.pem’과 ‘private_key.pem’ 파일로 저장합니다.

데이터 암호화하기

이제 공개키로 데이터를 암호화해 보겠습니다. 다음 예제 코드를 사용하여 텍스트를 암호화할 수 있습니다.

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

# 공개키 불러오기
with open('public_key.pem', 'rb') as f:
    public_key = RSA.import_key(f.read())

# 암호화할 데이터
plaintext = '암호화할 데이터'

# RSA 암호화
cipher_rsa = PKCS1_OAEP.new(public_key)
ciphertext = cipher_rsa.encrypt(plaintext.encode())

# 암호화된 데이터 출력
print(ciphertext)

위 예제 코드는 ‘public_key.pem’ 파일에서 공개키를 불러오고, 주어진 텍스트를 RSA 방식으로 암호화하여 출력합니다.

이제 PyCrypto를 사용하여 공개키로 암호화하는 방법을 알게 되었습니다. 공개키는 다른 사용자와 안전하게 공유함으로써 데이터를 암호화하고 해당 사용자에게 전송할 수 있습니다.