Python
 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)

キーを生成するには、上記のメソッドを1回実行するだけで済みます。

注:このキーは安全な場所に保管する必要があります。キーを紛失すると、このキーで暗号化されたデータを復号化できなくなります。 キーを読み込む

キーを生成したら、データを暗号化するためにメソッドにキーをロードする必要があります。

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)
完全なコード例

以下は、Pythonでメッセージを暗号化する完全な実例です。

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

  1. scikitlearnライブラリを使用してPythonで画像をアップロードおよび表示するにはどうすればよいですか?

    データの前処理とは、データのクリーニング、無効なデータの削除、ノイズ、データを関連する値に置き換えることなどを指します。これは必ずしもテキストデータを意味するわけではありません。画像やビデオ処理の場合もあります。 データの前処理とは、基本的に、すべてのデータ(さまざまなリソースまたは単一のリソースから収集される)を共通の形式または統一されたデータセット(データの種類に応じて)に収集するタスクを指します。実際のデータは決して理想的ではないため、データにセルの欠落、エラー、外れ値、列の不一致などが含まれる可能性があります。 場合によっては、画像が正しく配置されていないか、鮮明でないか、サイズが

  2. Pythonの「seaborn」ライブラリを使用してデータを視覚的に表現するにはどうすればよいですか?

    機械学習では、データからモデルを作成し、これまでに見たことのないデータを一般化します。入力として機械学習モデルに提供されるデータは、システムがデータを適切に理解して結果を生成できるようにする必要があります。 Seabornは、データの視覚化に役立つライブラリです。カスタマイズされたテーマと高レベルのインターフェースが付属しています。このインターフェースは、データの種類と、特定のフィルターが適用されたときのデータの動作をカスタマイズおよび制御するのに役立ちます。 Seabornライブラリには、さまざまなスタイルでの作業に役立つ「set_Style()」と呼ばれるインターフェースが含まれていま