파일이나 디렉토리를 암호화하는 것은 개인 또는 기업의 중요한 데이터를 안전하게 보호하는 데 중요한 역할을 합니다. 이번 포스트에서는 shutil
라이브러리를 사용하여 파일 또는 디렉토리를 암호화하는 방법에 대해 알아보겠습니다.
암호화 함수 구현하기
먼저, shutil
라이브러리를 사용하기 전에 암호화 함수를 구현해야 합니다. 이 함수는 사용자로부터 입력받은 비밀번호를 사용하여 파일이나 디렉토리를 암호화하고, 암호화된 결과를 반환해야 합니다. 아래는 예시로 작성한 암호화 함수입니다.
import hashlib
def encrypt(path, password):
# 비밀번호를 해싱하여 암호키 생성
key = hashlib.sha256(password.encode()).digest()
with open(path, 'rb') as file:
data = file.read()
# XOR 연산을 통해 데이터 암호화
encrypted_data = bytes([data_byte ^ key_byte for data_byte, key_byte in zip(data, key)])
return encrypted_data
파일 암호화하기
이제 위에서 구현한 암호화 함수를 사용하여 파일을 암호화하는 방법을 알아보겠습니다.
import shutil
def encrypt_file(input_file, output_file, password):
# 파일을 암호화하여 암호화된 데이터를 얻습니다.
encrypted_data = encrypt(input_file, password)
# 암호화된 데이터를 새로운 파일로 저장합니다.
with open(output_file, 'wb') as file:
file.write(encrypted_data)
위의 코드에서는 encrypt_file
함수를 사용하여 입력 파일을 읽고, 비밀번호를 사용하여 암호화한 후 새로운 파일로 저장하는 과정을 수행합니다. 이제 아래와 같이 함수를 호출하여 파일을 암호화할 수 있습니다.
encrypt_file('input.txt', 'encrypted.txt', 'mypassword')
디렉토리 암호화하기
디렉토리를 암호화하는 작업은 조금 더 복잡합니다. 디렉토리는 여러 개의 파일과 하위 디렉토리로 구성되어 있기 때문에, 모든 파일과 디렉토리를 순회하며 각각을 암호화해야 합니다.
아래는 디렉토리를 암호화하는 함수의 예시입니다.
import os
def encrypt_directory(input_directory, output_directory, password):
# 암호화된 파일이 저장될 디렉토리 생성
os.makedirs(output_directory, exist_ok=True)
for root, dirs, files in os.walk(input_directory):
for file in files:
input_file = os.path.join(root, file)
output_file = input_file.replace(input_directory, output_directory)
# 파일을 암호화하여 저장
encrypt_file(input_file, output_file, password)
위의 코드는 입력 디렉토리를 순회하며 각각의 파일을 암호화하여 출력 디렉토리에 저장합니다. 아래와 같이 함수를 호출하여 디렉토리를 암호화할 수 있습니다.
encrypt_directory('input_directory', 'encrypted_directory', 'mypassword')
마무리
위에서는 shutil
라이브러리를 사용하여 파일 및 디렉토리를 암호화하는 방법에 대해 알아보았습니다. 암호화된 데이터는 개인정보 보호 및 기업 비밀 유출 방지를 위해 매우 중요합니다. 위의 예시 코드를 사용하면 손쉽게 파일과 디렉토리를 암호화할 수 있습니다. 암호화된 데이터를 안전한 장소에 저장하여 보호하는 것을 잊지 마세요.