[python] PyCrypto를 사용하여 암호화된 파일의 무결성 확인하기

암호화된 파일을 사용할 때 항상 무결성을 확인하는 것은 매우 중요합니다. 파일이 암호화되고 전송되는 동안 변경되지 않았는지 확인하려면 무결성 체크썸을 사용해야 합니다. 이를 위해 PyCrypto 라이브러리를 사용하여 암호화된 파일의 무결성을 확인하는 방법을 알아보겠습니다.

1. PyCrypto 설치

PyCrypto 라이브러리를 사용하기 위해 먼저 설치해야 합니다. 다음 명령을 사용하여 PyCrypto를 설치합니다.

pip install pycrypto

2. 파일의 체크썸 생성

무결성을 확인하기 위해 파일의 체크썸을 생성해야 합니다. PyCrypto 라이브러리에서는 다양한 체크썸 알고리즘을 제공합니다. 예를 들어, MD5, SHA1, SHA256 등을 사용할 수 있습니다. 다음은 SHA256 알고리즘을 사용하여 파일의 체크썸을 생성하는 예시 코드입니다.

import hashlib

def generate_checksum(file_path):
    with open(file_path, 'rb') as f:
        data = f.read()
        checksum = hashlib.sha256(data).hexdigest()
    return checksum

위의 코드에서 file_path는 확인할 파일의 경로입니다. hashlib.sha256(data)를 통해 파일의 데이터를 해시 알고리즘으로 처리한 뒤 hexdigest()를 사용하여 체크썸을 생성합니다.

3. 파일의 무결성 확인

파일의 무결성을 확인하기 위해 암호화된 파일을 가져온 뒤 체크썸을 생성합니다. 생성한 체크썸과 원래 파일의 체크썸을 비교하여 무결성을 확인할 수 있습니다. 다음은 암호화된 파일의 무결성을 확인하는 예시 코드입니다.

import Crypto.Hash.SHA256 as SHA256

def verify_integrity(file_path, checksum):
    with open(file_path, 'rb') as f:
        data = f.read()
        hash_object = SHA256.new(data)
        computed_checksum = hash_object.hexdigest()
        if computed_checksum == checksum:
            print("파일의 무결성이 확인되었습니다.")
        else:
            print("파일이 변경되었을 수 있습니다.")

위의 코드에서 file_path는 확인할 암호화된 파일의 경로이고, checksum은 이전에 생성한 체크썸 값입니다. Crypto.Hash.SHA256 모듈을 사용하여 파일의 데이터를 해시한 뒤 생성한 체크썸과 비교합니다.

4. 사용 예시

위에서 작성한 함수들을 사용하여 파일의 무결성을 확인할 수 있습니다. 다음은 사용 예시입니다.

file_path = 'encrypted_file.bin'
checksum = generate_checksum(file_path)
verify_integrity(file_path, checksum)

위의 코드에서 file_path는 확인할 암호화된 파일의 경로입니다. generate_checksum 함수를 통해 체크썸을 생성하고, verify_integrity 함수를 통해 파일의 무결성을 확인합니다.

결론

암호화된 파일을 사용할 때는 항상 파일의 무결성을 확인해야 합니다. PyCrypto 라이브러리를 사용하여 파일의 체크썸을 생성하고, 생성한 체크썸과 원래 파일의 체크썸을 비교하여 무결성을 확인할 수 있습니다.

참고: PyCrypto 라이브러리