Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

암호화 라이브러리를 사용하여 Python에서 데이터를 암호화하고 해독하는 방법

이 튜토리얼에서는 데이터를 암호화하고 해독하는 방법을 배우게 됩니다. 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