[python] PyCrypto를 이용한 암호화된 데이터의 전환 방법 설정하기

암호화된 데이터의 안전한 전송 및 저장을 위해 암호화 알고리즘을 사용하는 것은 매우 중요합니다. PyCrypto는 Python으로 암호화와 관련된 작업을 수행하는데 도움을 주는 강력한 라이브러리입니다. 이 글에서는 PyCrypto를 사용하여 암호화된 데이터를 전환하는 방법에 대해 알아보겠습니다.

1. PyCrypto 설치하기

먼저, PyCrypto를 설치해야 합니다. Python 버전에 따라 설치 방법이 다를 수 있으므로, 공식 문서를 참조하여 설치해 주세요.

2. 데이터 암호화하기

PyCrypto를 사용하여 데이터를 암호화하는 첫 단계는 암호화에 사용할 키를 생성하는 것입니다. 키는 암호화와 복호화에 사용되는 비밀 값으로, 안전하게 보관되어야 합니다.

from Crypto.Cipher import AES
import base64
import os

# 키 생성
def generate_key():
    return os.urandom(32)

# 데이터 암호화
def encrypt_data(key, data):
    cipher = AES.new(key, AES.MODE_EAX)
    ciphertext, tag = cipher.encrypt_and_digest(data.encode())
    return base64.b64encode(cipher.nonce + tag + ciphertext).decode()

위의 코드에서 generate_key() 함수는 32바이트 길이의 랜덤한 키를 생성합니다. encrypt_data(key, data) 함수는 전달받은 키와 데이터를 사용하여 AES 알고리즘으로 데이터를 암호화한 후, Base64로 인코딩하여 반환합니다.

3. 데이터 복호화하기

암호화된 데이터를 다시 원래의 형태로 돌려놓기 위해서는 데이터를 복호화해야 합니다. 암호화된 데이터와 암호화에 사용된 키를 함께 사용하여 복호화 작업을 수행할 수 있습니다.

# 데이터 복호화
def decrypt_data(key, encrypted_data):
    encrypted_data = base64.b64decode(encrypted_data)
    nonce = encrypted_data[:16]
    tag = encrypted_data[16:32]
    ciphertext = encrypted_data[32:]
    cipher = AES.new(key, AES.MODE_EAX, nonce)
    decrypted_data = cipher.decrypt_and_verify(ciphertext, tag)
    return decrypted_data.decode()

위의 코드에서 decrypt_data(key, encrypted_data) 함수는 전달받은 키와 암호화된 데이터를 사용하여 데이터를 복호화합니다. 복호화된 데이터는 원래의 문자열로 변환하여 반환됩니다.

4. 사용 예시

이제 위에서 작성한 암호화 및 복호화 함수를 사용하는 간단한 예시 코드를 살펴보겠습니다.

# 사용 예시
if __name__ == "__main__":
    key = generate_key()

    original_data = "암호화된 데이터"
    encrypted_data = encrypt_data(key, original_data)
    decrypted_data = decrypt_data(key, encrypted_data)

    print("Original Data:", original_data)
    print("Encrypted Data:", encrypted_data)
    print("Decrypted Data:", decrypted_data)

위의 예시 코드에서는 키를 생성한 후, 암호화할 데이터를 정의하고 암호화하여 새로운 변수에 저장합니다. 그리고 다시 복호화해서 원래의 데이터와 동일한지 확인합니다.

이 글에서는 PyCrypto를 사용하여 암호화된 데이터의 전환 방법을 설정하는 방법에 대해 알아보았습니다. 이제 암호화된 데이터의 안전한 전송과 저장을 위해 PyCrypto를 활용할 수 있습니다. 암호화 알고리즘을 사용하여 데이터의 안전성을 보장하는 것은 매우 중요합니다.