[python] PyYAML을 이용하여 YAML 파일의 데이터를 암호화하기

암호화는 보안의 필수 요소 중 하나입니다. 데이터를 암호화하여 외부로부터의 무단 접근을 방지할 수 있습니다. 이번 블로그 포스트에서는 Python의 PyYAML을 사용하여 YAML 파일의 데이터를 암호화하는 방법을 알아보겠습니다.

PyYAML 설치하기

먼저, PyYAML을 설치해야 합니다. 다음 명령어를 사용하여 PyYAML을 설치할 수 있습니다.

pip install pyyaml

YAML 파일에 데이터 추가하기

암호화할 데이터를 YAML 파일에 추가해야 합니다. 다음은 암호화할 데이터가 포함된 YAML 파일의 예시입니다.

password: mysecretpassword

데이터 암호화하기

이제 PyYAML을 사용하여 데이터를 암호화하는 방법을 알아보겠습니다.

import yaml
import base64
from cryptography.fernet import Fernet

# 암호화할 데이터를 로드합니다.
with open('data.yml', 'r') as file:
    data = yaml.safe_load(file)

# 암호화 키를 생성합니다.
key = Fernet.generate_key()
cipher_suite = Fernet(key)

# 데이터를 암호화합니다.
encrypted_data = {}
for key, value in data.items():
    encrypted_data[key] = cipher_suite.encrypt(bytes(value, 'utf-8')).decode('utf-8')

# 암호화된 데이터를 YAML 파일에 저장합니다.
with open('encrypted_data.yml', 'w') as file:
    yaml.safe_dump(encrypted_data, file)

위의 코드는 PyYAML을 사용하여 데이터를 암호화하는 간단한 예시입니다. 암호화된 데이터는 encrypted_data.yml 파일에 저장됩니다. 암호화 키는 매번 실행할 때마다 새로 생성되므로, 필요에 따라 키를 저장하여 나중에 데이터를 복호화할 수 있습니다.

데이터 복호화하기

암호화된 데이터를 복호화하는 방법도 간단합니다. 아래의 코드를 사용하여 암호화된 데이터를 복호화할 수 있습니다.

# 암호화된 데이터를 로드합니다.
with open('encrypted_data.yml', 'r') as file:
    encrypted_data = yaml.safe_load(file)

# 데이터를 복호화합니다.
decrypted_data = {}
for key, value in encrypted_data.items():
    decrypted_data[key] = cipher_suite.decrypt(bytes(value, 'utf-8')).decode('utf-8')

# 복호화된 데이터를 출력합니다.
print(decrypted_data)

위의 코드는 암호화된 데이터를 복호화하여 출력하는 예시입니다. 데이터를 복호화하기 위해서는 암호화할 때 사용한 암호화 키가 필요합니다.

마무리

PyYAML과 암호화 알고리즘을 함께 사용하여 YAML 파일의 데이터를 안전하게 암호화하고 복호화하는 방법에 대해 알아보았습니다. 데이터의 보안이 중요한 경우에는 이런 암호화 기술을 적용하여 안전한 데이터 관리를 할 수 있습니다.

참고 자료