Heim  >  Artikel  >  Backend-Entwicklung  >  So verschlüsseln und entschlüsseln Sie Daten in Python

So verschlüsseln und entschlüsseln Sie Daten in Python

WBOY
WBOYOriginal
2023-10-18 10:15:14961Durchsuche

So verschlüsseln und entschlüsseln Sie Daten in Python

Um Daten in Python zu ver- und entschlüsseln, sind spezifische Codebeispiele erforderlich

Datenverschlüsselung und -entschlüsselung sind sehr wichtige Konzepte im Bereich der Informationssicherheit. In praktischen Anwendungen müssen wir häufig sensible Daten verschlüsseln, um unbefugten Zugriff und Informationsverlust zu verhindern. Python ist eine leistungsstarke Programmiersprache, die eine Fülle von Bibliotheken und Funktionen zur Implementierung von Datenverschlüsselungs- und -entschlüsselungsvorgängen bereitstellt. In diesem Artikel werden einige häufig verwendete Verschlüsselungsalgorithmen und spezifische Codebeispiele zur Implementierung der Datenverschlüsselung und -entschlüsselung in Python vorgestellt.

1. MD5-Verschlüsselungsalgorithmus

MD5 (Message-Digest-Algorithmus 5) ist eine häufig verwendete Hash-Funktion zum Verschlüsseln von Daten beliebiger Länge. Es wandelt Nachrichten beliebiger Länge in einen digitalen 128-Bit-Fingerabdruck um, um Datenintegrität und Manipulationssicherheit sicherzustellen.

In Python können wir die Hashlib-Bibliothek verwenden, um den MD5-Verschlüsselungsalgorithmus zu implementieren. Das Folgende ist ein Beispielcode:

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)

Laufergebnisse:

加密后的数据: 5eb63bbbe01eeed093cb22bb8f5acdc3

2. AES-Verschlüsselungsalgorithmus

AES (Advanced Encryption Standard) ist ein fortschrittlicher Verschlüsselungsstandard, der in verschiedenen Verschlüsselungsszenarien weit verbreitet ist. Es verwendet eine symmetrische Schlüsselverschlüsselung, um schnelle und sichere Ver- und Entschlüsselungsvorgänge für Daten durchzuführen.

In Python können wir die Pycryptodome-Bibliothek verwenden, um den AES-Verschlüsselungsalgorithmus zu implementieren. Das Folgende ist ein Beispielcode:

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)

Betriebsergebnisse:




解密后的数据: hello world

3. RSA-Verschlüsselungsalgorithmus

RSA (Rivest-Shamir-Adleman) ist ein asymmetrischer Verschlüsselungsalgorithmus, der häufig für Datenverschlüsselung und digitale Signaturen verwendet wird. Es verwendet zwei Schlüssel: Der öffentliche Schlüssel wird zum Verschlüsseln von Daten und der private Schlüssel zum Entschlüsseln von Daten verwendet.

In Python können wir die Kryptografiebibliothek verwenden, um den RSA-Verschlüsselungsalgorithmus zu implementieren. Das Folgende ist ein Beispielcode:

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)

Laufergebnis:

解密后的数据: hello world

Anhand des obigen Beispielcodes können wir sehen, wie verschiedene Verschlüsselungsalgorithmen zum Ver- und Entschlüsseln von Daten in Python verwendet werden. Durch die Wahl eines geeigneten Verschlüsselungsalgorithmus und einer geeigneten Schlüssellänge sowie die Einhaltung sicherer Codierungspraktiken wird die Vertraulichkeit und Integrität Ihrer Daten gewährleistet. Bitte beachten Sie, dass der Beispielcode in diesem Artikel nur als Referenz dient. Bei der tatsächlichen Anwendung müssen Details wie Schlüsselverwaltung und Datenübertragungssicherheit berücksichtigt werden.

Das obige ist der detaillierte Inhalt vonSo verschlüsseln und entschlüsseln Sie Daten in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn