파이썬으로 파일 암호화를 위한 압축 기술 구현하기

보안이 중요한 파일을 보호하기 위해 파일을 암호화하고 압축하는 것은 일반적인 요구 사항입니다. 이번 가이드에서는 파이썬을 사용하여 파일 암호화 및 압축을 구현하는 방법을 설명하겠습니다.

암호화를 위한 패키지 선택

파이썬에서 파일을 암호화하기 위해 cryptography 패키지를 사용할 수 있습니다. 이 패키지는 강력한 암호화 알고리즘과 기능을 제공하여 파일을 안전하게 암호화할 수 있습니다. cryptography 패키지를 설치하려면 다음 명령을 실행합니다.

pip install cryptography

파일 암호화

파일을 암호화하기 위해 먼저 암호화 키를 생성해야 합니다. cryptography 패키지에서 Fernet 클래스를 사용하여 대칭 키를 생성할 수 있습니다. 다음은 대칭 키를 생성하는 코드 예제입니다.

from cryptography.fernet import Fernet

def generate_key():
    return Fernet.generate_key()

key = generate_key()

키를 생성한 후에는 원본 파일을 암호화할 준비가 되었습니다. 다음 코드는 파일을 암호화하는 함수를 보여줍니다.

def encrypt_file(file_path, key):
    cipher = Fernet(key)

    with open(file_path, 'rb') as file:
        plaintext = file.read()

    encrypted_text = cipher.encrypt(plaintext)

    with open(file_path + '.encrypted', 'wb') as file:
        file.write(encrypted_text)

위의 코드에서는 file_path에 암호화할 파일의 경로를 전달하고, key에는 생성된 키를 전달합니다. 암호화된 파일은 .encrypted 확장자를 가지도록 저장됩니다.

파일 압축

파일을 압축하기 위해 zipfile 모듈을 사용할 수 있습니다. zipfile 모듈은 파일 및 디렉토리를 압축하고 압축된 파일을 생성하는 기능을 제공합니다. 다음 코드는 파일을 압축하는 함수를 보여줍니다.

import zipfile

def compress_file(file_path):
    with zipfile.ZipFile(file_path + '.zip', 'w') as zip_file:
        zip_file.write(file_path)

위의 코드에서는 file_path에 압축할 파일의 경로를 전달합니다. 압축된 파일은 .zip 확장자를 가지도록 저장됩니다.

파일 암호화 및 압축

파일을 암호화하고 압축하기 위해 위의 두 함수를 결합할 수 있습니다. 다음 코드는 파일을 암호화하고 압축하는 함수를 보여줍니다.

def encrypt_and_compress_file(file_path, key):
    encrypt_file(file_path, key)
    compress_file(file_path + '.encrypted')

# 사용 예시
key = generate_key()
file_path = 'path/to/file.txt'
encrypt_and_compress_file(file_path, key)

위의 코드에서는 generate_key() 함수를 사용하여 암호화 키를 생성하고, file_path에 암호화 및 압축할 파일의 경로를 전달합니다.

이제 파일 암호화 및 압축 기술을 구현하기 위해 파이썬의 cryptography 패키지와 zipfile 모듈을 사용할 수 있습니다. 이를 통해 중요한 파일을 안전하게 보호할 수 있습니다.

참고 자료

#파이썬 #파일암호화