ホームページ >バックエンド開発 >Python チュートリアル >Python でデータを暗号化および復号化する方法

Python でデータを暗号化および復号化する方法

WBOY
WBOYオリジナル
2023-10-18 10:15:14997ブラウズ

Python でデータを暗号化および復号化する方法

Python でデータを暗号化および復号化する方法には、特定のコード サンプルが必要です

データの暗号化と復号化は、情報セキュリティの分野において非常に重要な概念です。実際のアプリケーションでは、多くの場合、不正アクセスや情報漏洩を防ぐために機密データを暗号化する必要があります。 Python は、データの暗号化と復号化の操作を実装するための豊富なライブラリと関数を提供する強力なプログラミング言語です。この記事では、一般的に使用される暗号化アルゴリズムと、Python でデータの暗号化と復号化を実装するための具体的なコード例を紹介します。

1. MD5 暗号化アルゴリズム

MD5 (メッセージ ダイジェスト アルゴリズム 5) は、任意の長さのデータを暗号化するために使用される一般的に使用されるハッシュ関数です。あらゆる長さのメッセージを 128 ビットのデジタル フィンガープリントに変換して、データの整合性と改ざん防止を保証します。

Python では、hashlib ライブラリを使用して MD5 暗号化アルゴリズムを実装できます。以下はサンプルコードです:

import hashlib

def md5_encrypt(data):
    md5 = hashlib.md5()
    md5.update(data.encode(encoding='utf-8'))
    encrypt_data = md5.hexdigest()
    return encrypt_data

# 测试示例
data = 'hello world'
encrypted_data = md5_encrypt(data)
print("加密后的数据:", encrypted_data)

実行結果:

加密后的数据: 5eb63bbbe01eeed093cb22bb8f5acdc3

2. AES 暗号化アルゴリズム

AES (Advanced Encryption Standard) は、広く使用されている高度な暗号化標準です。さまざまな暗号化シナリオで。対称キー暗号化を使用して、データの暗号化と復号化操作を高速かつ安全に実行します。

Python では、pycryptodome ライブラリを使用して AES 暗号化アルゴリズムを実装できます。以下はサンプルコードです:

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

def aes_encrypt(data, key):
    cipher = AES.new(key, AES.MODE_EAX)
    nonce = cipher.nonce
    ciphertext, tag = cipher.encrypt_and_digest(data.encode())
    encrypted_data = nonce + ciphertext + tag
    return encrypted_data

def aes_decrypt(encrypted_data, key):
    nonce = encrypted_data[:16]
    ciphertext = encrypted_data[16:-16]
    tag = encrypted_data[-16:]
    cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
    data = cipher.decrypt_and_verify(ciphertext, tag)
    return data.decode()

# 测试示例
data = 'hello world'
key = get_random_bytes(16)
encrypted_data = aes_encrypt(data, key)
print("加密后的数据:", encrypted_data)
decrypted_data = aes_decrypt(encrypted_data, key)
print("解密后的数据:", decrypted_data)

実行結果:




解密后的数据: hello world

3. RSA 暗号化アルゴリズム

RSA (Rivest-Shamir-Adleman) は非対称暗号化アルゴリズムです。データの暗号化とデジタル署名に使用されます。 2 つのキーを使用します。公開キーはデータの暗号化に使用され、秘密キーはデータの復号化に使用されます。

Python では、暗号化ライブラリを使用して RSA 暗号化アルゴリズムを実装できます。以下はサンプル コードです:

from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.backends import default_backend

def rsa_encrypt(data, public_key):
    public_key = serialization.load_pem_public_key(public_key, backend=default_backend())
    encrypted_data = public_key.encrypt(data.encode(), padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None))
    return encrypted_data

def rsa_decrypt(encrypted_data, private_key):
    private_key = serialization.load_pem_private_key(private_key, password=None, backend=default_backend())
    decrypted_data = private_key.decrypt(encrypted_data, padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None))
    return decrypted_data.decode()

# 测试示例
data = 'hello world'
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048, backend=default_backend())
private_pem = private_key.private_bytes(encoding=serialization.Encoding.PEM, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption())
public_key = private_key.public_key()
public_pem = public_key.public_bytes(encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo)
encrypted_data = rsa_encrypt(data, public_pem)
print("加密后的数据:", encrypted_data)
decrypted_data = rsa_decrypt(encrypted_data, private_pem)
print("解密后的数据:", decrypted_data)

実行結果:

解密后的数据: hello world

上記のサンプル コードを通じて、Python でさまざまな暗号化アルゴリズムを使用してデータを暗号化および復号化する方法を確認できます。適切な暗号化アルゴリズムとキーの長さを選択し、安全なコーディング慣行に従うことで、データの機密性と整合性が確保されます。なお、本記事のサンプルコードは参考用であり、実際のアプリケーションでは鍵管理やデータ送信のセキュリティなどの詳細を考慮する必要があります。

以上がPython でデータを暗号化および復号化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。