[파이썬] 파이썬 라이브러리를 활용한 파일 암호화 구현

파일 암호화는 개인정보나 중요한 파일을 안전하게 보호하기 위해 사용되는 중요한 절차입니다. 이번 글에서는 파이썬 언어를 사용하여 파일을 암호화하는 방법을 알아보겠습니다. 파이썬에서는 다양한 라이브러리를 활용하여 파일 암호화를 구현할 수 있습니다.

Cryptography 라이브러리

Cryptography는 파이썬에서 암호화 및 디지털 서명을 처리하기 위한 강력한 라이브러리입니다. 이 라이브러리는 손쉽게 사용할 수 있고, 안전한 암호화 기능을 제공합니다. 다음은 Cryptography 라이브러리를 사용하여 파일 암호화를 구현하는 예제 코드입니다.

from cryptography.fernet import Fernet

# 암호화 키 생성
key = Fernet.generate_key()

# 키를 파일에 저장
with open('encryption_key.txt', 'wb') as key_file:
    key_file.write(key)

# 암호화 키 로드
with open('encryption_key.txt', 'rb') as key_file:
    key = key_file.read()

# Fernet 객체 생성
fernet = Fernet(key)

# 파일 암호화
with open('plain_file.txt', 'rb') as file:
    plain_text = file.read()

encrypted_text = fernet.encrypt(plain_text)

with open('encrypted_file.txt', 'wb') as file:
    file.write(encrypted_text)

위 코드는 cryptography.fernet 모듈을 사용하여 파일을 암호화하는 과정을 보여줍니다. 코드를 실행하면 암호화 키가 생성되고, 이 키는 파일에 저장됩니다. 키는 나중에 다시 사용되어 암호화된 파일을 해독할 때 필요합니다. Fernet 객체를 생성하여 암호화 키를 사용하여 파일을 암호화하고, 암호화된 파일을 저장합니다.

PyCryptodome 라이브러리

PyCryptodome은 파이썬에서 암호화, 해시, 서명 등의 다양한 암호 작업을 수행할 수 있는 라이브러리입니다. 이 라이브러리는 암호화 알고리즘의 다양한 옵션과 유연성을 제공합니다. 다음은 PyCryptodome 라이브러리를 사용하여 파일 암호화를 구현하는 예제 코드입니다.

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

# 암호화 키 생성
key = get_random_bytes(16)

# 키를 파일에 저장
with open('encryption_key.txt', 'wb') as key_file:
    key_file.write(key)

# 암호화 키 로드
with open('encryption_key.txt', 'rb') as key_file:
    key = key_file.read()

# AES 객체 생성
cipher = AES.new(key, AES.MODE_EAX)

# 파일 암호화
with open('plain_file.txt', 'rb') as file:
    plain_text = file.read()

ciphertext, tag = cipher.encrypt_and_digest(plain_text)

with open('encrypted_file.txt', 'wb') as file:
    [file.write(x) for x in (cipher.nonce, tag, ciphertext)]

위 코드는 Crypto.Cipher 모듈을 사용하여 파일을 암호화하는 과정을 보여줍니다. get_random_bytes 함수를 사용하여 암호화 키를 생성하고, 이 키는 파일에 저장됩니다. 키는 나중에 다시 사용되어 암호화된 파일을 해독할 때 필요합니다. AES 객체를 생성하여 암호화 키를 사용하여 파일을 암호화하고, 암호화된 파일을 저장합니다.

마무리

파이썬에서 파일 암호화를 구현하는 방법을 알아보았습니다. Cryptography와 PyCryptodome은 각각 다양한 암호화 알고리즘과 기능을 제공하여 파일 암호화를 쉽게 구현할 수 있도록 도와줍니다. 암호화 관련 작업을 수행할 때는 항상 암호화 키의 안전한 저장과 관리에 주의해야 합니다.