首頁  >  文章  >  後端開發  >  如何在Python中進行資料加密與解密

如何在Python中進行資料加密與解密

WBOY
WBOY原創
2023-10-18 10:15:14866瀏覽

如何在Python中進行資料加密與解密

如何在Python中進行資料加密和解密,需要具體程式碼範例

資料加密和解密是資訊安全領域中非常重要的概念。在實際應用中,我們經常需要對敏感的資料進行加密保護,以防止未授權的存取和資訊外洩。 Python是一種功能強大的程式語言,提供了豐富的函式庫和函數來實現資料加密和解密的操作。本文將介紹一些常用的加密演算法和在Python中實現資料加密和解密的具體程式碼範例。

一、MD5加密演算法

MD5(Message-Digest Algorithm 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

二、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

三、RSA加密演算法

RSA(Rivest-Shamir-Adleman)是一種非對稱加密演算法,常用於資料的加密和數位簽章。它使用兩個金鑰,公鑰用於加密數據,私鑰用於解密資料。

在Python中,我們可以使用cryptography函式庫來實作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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn