[python] PyCrypto를 이용한 암호화된 파일 공유 방법

파일을 공유할 때 보안이 중요한 요소가 될 수 있습니다. 이를 해결하기 위해 PyCrypto 라이브러리를 사용하여 파일을 암호화하여 공유하는 방법에 대해 알아보겠습니다.

1. PyCrypto 설치하기

먼저, PyCrypto 라이브러리를 설치해야 합니다. 다음 명령어를 사용하여 PyCrypto를 설치할 수 있습니다.

pip install pycrypto

2. 파일 암호화하기

다음으로, 암호화할 파일이 필요합니다. 이 예제에서는 “plaintext.txt”라는 이름의 파일을 사용하겠습니다. 암호화하려는 파일이 현재 작업 디렉토리에 존재해야 합니다.

from Crypto.Cipher import AES
import os

def encrypt_file(file_path, key):
    chunk_size = 64 * 1024  # 64KB
    output_file = "encrypted_file.enc"

    # 암호화에 사용할 초기화 벡터 생성
    iv = os.urandom(16)

    cipher = AES.new(key, AES.MODE_CBC, iv)

    with open(file_path, 'rb') as file:
        with open(output_file, 'wb') as output:
            output.write(iv)

            while True:
                chunk = file.read(chunk_size)

                if len(chunk) == 0:
                    break

                elif len(chunk) % 16 != 0:
                    chunk += b' ' * (16 - len(chunk) % 16)

                output.write(cipher.encrypt(chunk))

    return output_file

# 파일을 암호화하기 위한 키 생성
key = os.urandom(16)

# 파일 암호화
encrypted_file = encrypt_file("plaintext.txt", key)
print("암호화된 파일: ", encrypted_file)

3. 암호화된 파일 공유하기

파일이 성공적으로 암호화되었다면, 이제 암호화된 파일을 다른 사람과 공유할 수 있습니다. 공유하기 전에 암호화에 사용한 초기화 벡터와 암호화에 사용할 키를 전달해야 합니다.

또한, PyCrypto 라이브러리를 설치한 컴퓨터에서만 암호를 해독할 수 있으므로, 공유 대상에게도 PyCrypto 라이브러리가 설치되어 있는지 확인해야 합니다.

4. 파일 복호화하기

암호화된 파일을 받은 공유 대상은 다음과 같은 코드를 사용하여 파일을 복호화할 수 있습니다.

from Crypto.Cipher import AES

def decrypt_file(file_path, key):
    chunk_size = 64 * 1024  # 64KB
    with open(file_path, 'rb') as file:
        iv = file.read(16)
        cipher = AES.new(key, AES.MODE_CBC, iv)

        with open("decrypted_file.txt", 'wb') as output:
            while True:
                chunk = file.read(chunk_size)

                if len(chunk) == 0:
                    break

                output.write(cipher.decrypt(chunk))

    return "decrypted_file.txt"

# 암호화에 사용한 키와 동일한 키를 사용하여 파일 복호화
decrypted_file = decrypt_file("encrypted_file.enc", key)
print("복호화된 파일: ", decrypted_file)

위의 코드는 암호화된 파일을 복호화하여 “decrypted_file.txt”라는 이름으로 저장합니다.

5. 결론

PyCrypto를 사용하여 파일을 암호화하여 공유하는 방법에 대해 알아보았습니다. 보안이 중요한 파일을 공유해야 할 때는 항상 암호화를 고려해야 합니다. PyCrypto는 강력한 암호화 알고리즘과 함수를 제공하여 파일을 안전하게 암호화할 수 있습니다.

참고 문서: