[python] PyCrypto를 사용하여 암호화된 데이터베이스 저장하기

데이터베이스에 중요한 정보를 저장할 때, 이를 암호화하여 보안성을 높일 수 있습니다. Python에서 PyCrypto 라이브러리를 사용하면 간단하게 데이터를 암호화하고 복호화할 수 있습니다.

PyCrypto 설치하기

먼저, PyCrypto를 설치해야합니다. 아래의 커맨드를 실행하여 PyCrypto를 설치합니다.

pip install pycrypto

데이터 암호화하기

데이터베이스에 저장할 데이터를 암호화하는 과정은 다음과 같습니다.

from Crypto.Cipher import AES
import base64

def encrypt(data, key):
    cipher = AES.new(key, AES.MODE_ECB)
    encrypted_data = cipher.encrypt(data)
    return base64.b64encode(encrypted_data)

data = "이것은 암호화된 데이터입니다."
key = "abcdefghijklmnop"

encrypted_data = encrypt(data, key)
print(encrypted_data)

위 코드에서 encrypt 함수는 주어진 데이터를 AES 알고리즘으로 암호화한 후 Base64로 인코딩합니다. 이후 암호화된 데이터를 출력합니다.

데이터 복호화하기

암호화된 데이터를 복호화하는 과정은 다음과 같습니다.

def decrypt(encrypted_data, key):
    cipher = AES.new(key, AES.MODE_ECB)
    decrypted_data = cipher.decrypt(base64.b64decode(encrypted_data))
    return decrypted_data

decrypted_data = decrypt(encrypted_data, key)
print(decrypted_data)

위 코드에서 decrypt 함수는 주어진 암호화된 데이터를 Base64로 디코딩한 후 AES 알고리즘으로 복호화합니다. 이후 복호화된 데이터를 출력합니다.

데이터베이스에 암호화된 데이터 저장하기

이제 데이터베이스에 암호화된 데이터를 저장하는 방법을 알아보겠습니다. 각 데이터베이스 시스템마다 다소 차이가 있을 수 있기 때문에, 여기서는 MySQL을 사용하는 예시를 들겠습니다.

import mysql.connector

def save_encrypted_data(encrypted_data):
    db = mysql.connector.connect(
        host="localhost",
        user="username",
        password="password",
        database="database_name"
    )

    cursor = db.cursor()
    sql = "INSERT INTO encrypted_data (data) VALUES (%s)"
    values = (encrypted_data, )

    cursor.execute(sql, values)
    db.commit()

    print("암호화된 데이터가 저장되었습니다.")

save_encrypted_data(encrypted_data)

위 코드에서 save_encrypted_data 함수는 암호화된 데이터를 MySQL 데이터베이스에 저장합니다. 데이터베이스에 접속하고 INSERT 쿼리를 실행하면 암호화된 데이터가 저장됩니다.

결론

PyCrypto를 사용하여 데이터베이스에 암호화된 데이터를 저장하는 방법에 대해 알아보았습니다. 데이터 암호화는 보안성을 높이고 중요한 정보를 안전하게 저장하기 위한 매우 중요한 기술입니다. 이러한 기술을 사용하여 사용자의 개인정보나 보안에 민감한 데이터를 안전하게 관리할 수 있습니다.

참고 자료