파일 암호화는 개인정보나 중요한 파일을 안전하게 보호하기 위해 사용되는 중요한 절차입니다. 이번 글에서는 파이썬 언어를 사용하여 파일을 암호화하는 방법을 알아보겠습니다. 파이썬에서는 다양한 라이브러리를 활용하여 파일 암호화를 구현할 수 있습니다.
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은 각각 다양한 암호화 알고리즘과 기능을 제공하여 파일 암호화를 쉽게 구현할 수 있도록 도와줍니다. 암호화 관련 작업을 수행할 때는 항상 암호화 키의 안전한 저장과 관리에 주의해야 합니다.