이 튜토리얼에서는 데이터를 암호화하고 해독하는 방법을 배우게 됩니다. Python의 암호화 라이브러리를 사용하는 텍스트 문자열입니다.
암호화는 승인된 당사자만 액세스할 수 있는 방식으로 정보를 인코딩하는 프로세스입니다. 다른 사람이 보거나 액세스하는 것을 원하지 않는 데이터를 안전하게 보호할 수 있습니다.
관련:
- 암호화 기본 사항
이 예에서는 대칭 암호화를 사용합니다. 즉, 데이터 암호화에 사용한 것과 동일한 키를 복호화에도 사용할 수 있습니다.
여기에서 사용하는 암호화 라이브러리는 AES 알고리즘을 기반으로 합니다.
Python에서 데이터 암호화
먼저 암호화 라이브러리를 설치해야 합니다.
pip3 install cryptography
암호화 라이브러리에서 Fernet
을 가져와야 합니다. 키 생성을 시작합니다. 이 키는 대칭 암호화/복호화에 필요합니다.
키 생성
키를 생성하기 위해 generate_key()
를 호출합니다. 방법:
from cryptography.fernet import Fernet
def generate_key():
"""
Generates a key and save it into a file
"""
key = Fernet.generate_key()
with open("secret.key", "wb") as key_file:
key_file.write(key)
키를 생성하려면 위의 방법을 한 번만 실행하면 됩니다.
참고:이 키는 안전한 장소에 보관해야 합니다. 키를 분실하면 이 키로 암호화된 데이터를 해독할 수 없습니다.키 로드
키를 생성한 후에는 데이터를 암호화하기 위해 메서드에 키를 로드해야 합니다.
def load_key():
"""
Loads the key named `secret.key` from the current directory.
"""
return open("secret.key", "rb").read()
메시지 암호화
이제 메시지를 암호화할 준비가 되었습니다. 이것은 3단계 프로세스입니다:
- 1 - 메시지 인코딩
- 2 - Fernet 클래스 초기화
- 3 - 인코딩된 메시지를
encrypt()
에 전달 방법
메시지 인코딩:
message = "message I want to encrypt".encode()
Fernet 클래스 초기화:
f = Fernet(key)
메시지 암호화:
encrypted_message = f.encrypt(message)
전체 코드 예
다음은 파이썬에서 메시지를 암호화하는 전체 작업 예입니다.
from cryptography.fernet import Fernet
def generate_key():
"""
Generates a key and save it into a file
"""
key = Fernet.generate_key()
with open("secret.key", "wb") as key_file:
key_file.write(key)
def load_key():
"""
Load the previously generated key
"""
return open("secret.key", "rb").read()
def encrypt_message(message):
"""
Encrypts a message
"""
key = load_key()
encoded_message = message.encode()
f = Fernet(key)
encrypted_message = f.encrypt(encoded_message)
print(encrypted_message)
if __name__ == "__main__":
encrypt_message("encrypt this message")
출력:
b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4='
Python에서 데이터 복호화
메시지를 해독하려면 decrypt()
를 호출하면 됩니다. Fernet
의 메소드 도서관. 키가 메시지를 해독하는 데 필요하기 때문에 키도 로드해야 한다는 것을 기억하십시오.
from cryptography.fernet import Fernet
def load_key():
"""
Load the previously generated key
"""
return open("secret.key", "rb").read()
def decrypt_message(encrypted_message):
"""
Decrypts an encrypted message
"""
key = load_key()
f = Fernet(key)
decrypted_message = f.decrypt(encrypted_message)
print(decrypted_message.decode())
if __name__ == "__main__":
decrypt_message(b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4=')
출력:
encrypt this message