Python加密與解密案例分析

小樊
81
2024-11-02 18:19:32

在Python中,我們可以使用多種庫(kù)進(jìn)行加密和解密操作

  1. 導(dǎo)入所需庫(kù):
import base64
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad
  1. 加密函數(shù):
def encrypt(plain_text, key):
    cipher = AES.new(key, AES.MODE_CBC)
    cipher_text = cipher.encrypt(pad(plain_text.encode('utf-8'), AES.block_size))
    return base64.b64encode(cipher.iv + cipher_text).decode('utf-8')
  1. 解密函數(shù):
def decrypt(encrypted_text, key):
    encrypted_text = base64.b64decode(encrypted_text)
    iv = encrypted_text[:AES.block_size]
    cipher_text = encrypted_text[AES.block_size:]
    cipher = AES.new(key, AES.MODE_CBC, iv)
    return unpad(cipher.decrypt(cipher_text), AES.block_size).decode('utf-8')
  1. 示例:
key = get_random_bytes(16)  # 生成一個(gè)隨機(jī)的AES密鑰
plain_text = "Hello, World!"  # 要加密的文本

# 加密
encrypted_text = encrypt(plain_text, key)
print("Encrypted text:", encrypted_text)

# 解密
decrypted_text = decrypt(encrypted_text, key)
print("Decrypted text:", decrypted_text)

在這個(gè)例子中,我們使用了AES加密算法和CBC模式。首先,我們生成一個(gè)隨機(jī)的密鑰,然后使用加密函數(shù)對(duì)明文進(jìn)行加密。加密后的文本將使用Base64編碼,以便于傳輸和存儲(chǔ)。接下來(lái),我們使用解密函數(shù)對(duì)加密后的文本進(jìn)行解密,恢復(fù)原始的明文。

注意:在實(shí)際應(yīng)用中,請(qǐng)確保密鑰的安全存儲(chǔ)和傳輸。此外,根據(jù)具體需求,您可能需要使用更高級(jí)的加密庫(kù),如PyCryptodome。

0