暗号化ライブラリを使用して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
-
scikitlearnライブラリを使用してPythonで画像をアップロードおよび表示するにはどうすればよいですか?
データの前処理とは、データのクリーニング、無効なデータの削除、ノイズ、データを関連する値に置き換えることなどを指します。これは必ずしもテキストデータを意味するわけではありません。画像やビデオ処理の場合もあります。 データの前処理とは、基本的に、すべてのデータ(さまざまなリソースまたは単一のリソースから収集される)を共通の形式または統一されたデータセット(データの種類に応じて)に収集するタスクを指します。実際のデータは決して理想的ではないため、データにセルの欠落、エラー、外れ値、列の不一致などが含まれる可能性があります。 場合によっては、画像が正しく配置されていないか、鮮明でないか、サイズが
-
Pythonの「seaborn」ライブラリを使用してデータを視覚的に表現するにはどうすればよいですか?
機械学習では、データからモデルを作成し、これまでに見たことのないデータを一般化します。入力として機械学習モデルに提供されるデータは、システムがデータを適切に理解して結果を生成できるようにする必要があります。 Seabornは、データの視覚化に役立つライブラリです。カスタマイズされたテーマと高レベルのインターフェースが付属しています。このインターフェースは、データの種類と、特定のフィルターが適用されたときのデータの動作をカスタマイズおよび制御するのに役立ちます。 Seabornライブラリには、さまざまなスタイルでの作業に役立つ「set_Style()」と呼ばれるインターフェースが含まれていま