[python] 파이썬에서 PyCrypto 사용법

PyCrypto는 파이썬에서 사용할 수 있는 암호화 및 암호 해독 기능을 제공하는 라이브러리입니다. 이 블로그 포스트에서는 PyCrypto 라이브러리를 설치하고 사용하는 방법을 알아보겠습니다.

PyCrypto 설치하기

PyCrypto를 설치하려면 pip를 사용하면 됩니다. 아래의 명령어를 사용하여 설치할 수 있습니다.

pip install pycrypto

PyCrypto 사용 예제

대칭키 암호화

파일이나 문자열을 대칭키를 사용하여 암호화하고 해독하는 예제를 살펴보겠습니다.

from Crypto.Cipher import AES

def encrypt(plain_text, key):
    cipher = AES.new(key, AES.MODE_EAX)
    cipher_text, tag = cipher.encrypt_and_digest(plain_text)
    return cipher_text, cipher.nonce, tag

def decrypt(cipher_text, nonce, tag, key):
    cipher = AES.new(key, AES.MODE_EAX, nonce)
    plain_text = cipher.decrypt_and_verify(cipher_text, tag)
    return plain_text

key = b'secret_key'
plain_text = b'Hello, World!'

cipher_text, nonce, tag = encrypt(plain_text, key)
print(f"Cipher text: {cipher_text}")
print(f"Nonce: {nonce}")
print(f"Tag: {tag}")

decrypted_text = decrypt(cipher_text, nonce, tag, key)
print(f"Decrypted text: {decrypted_text}")

공개키/개인키 암호화

PyCrypto를 사용하여 공개키/개인키 암호화를 수행하는 예제를 살펴보겠습니다.

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

def encrypt(public_key_path, plain_text):
    public_key = RSA.import_key(open(public_key_path).read())
    cipher = PKCS1_OAEP.new(public_key)
    cipher_text = cipher.encrypt(plain_text)
    return cipher_text

def decrypt(private_key_path, cipher_text):
    private_key = RSA.import_key(open(private_key_path).read())
    cipher = PKCS1_OAEP.new(private_key)
    plain_text = cipher.decrypt(cipher_text)
    return plain_text

public_key_path = 'public_key.pem'
private_key_path = 'private_key.pem'
plain_text = b'Hello, World!'

cipher_text = encrypt(public_key_path, plain_text)
print(f"Cipher text: {cipher_text}")

decrypted_text = decrypt(private_key_path, cipher_text)
print(f"Decrypted text: {decrypted_text}")

결론

이번 포스트에서는 파이썬에서 PyCrypto 라이브러리를 사용하여 암호화와 암호 해독을 하는 방법을 알아보았습니다. PyCrypto는 간편한 설치와 사용법으로 암호화 보안 기능을 간단히 구현할 수 있습니다. 더 자세한 사용법은 PyCrypto의 공식 문서를 참고하시기 바랍니다.

참고 자료