91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Python加密與解密原理是啥

小樊
82
2024-11-02 17:56:33
欄目: 編程語言

Python 加密和解密的原理主要基于密碼學,密碼學是一門研究信息安全和保密的科學。在 Python 中,我們可以使用多種加密和解密算法來實現這一目的。以下是一些常見的加密和解密算法及其原理:

  1. 對稱加密(Symmetric Encryption): 對稱加密是指加密和解密使用相同的密鑰。在這種加密算法中,加密和解密的速度較快,因為它們使用相同的算法。常見的對稱加密算法有 AES(高級加密標準)、DES(數據加密標準)和 3DES(三重數據加密算法)。

  2. 非對稱加密(Asymmetric Encryption): 非對稱加密是指加密和解密使用不同的密鑰,一個用于加密,另一個用于解密。這種加密算法的安全性較高,因為即使攻擊者獲得了加密密鑰,他們也無法輕易解密密文。常見的非對稱加密算法有 RSA(Rivest-Shamir-Adleman)和 ECC(橢圓曲線加密)。

  3. 散列函數(Hash Functions): 散列函數是一種將任意長度的輸入數據映射到固定長度輸出的單向函數。它們主要用于驗證數據的完整性和一致性。常見的散列算法有 MD5(消息摘要算法 5)、SHA-1(安全散列算法 1)和 SHA-256(安全散列算法 256)。

  4. 加密庫(Cryptographic Libraries): Python 提供了一些加密庫,如 cryptographypycryptodome,這些庫提供了許多加密和解密算法的實現。在使用這些庫時,我們通常需要導入相應的模塊,然后使用庫提供的函數進行加密和解密操作。

以下是一個簡單的 Python 對稱加密和解密示例,使用 AES 算法:

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad

# 加密函數
def encrypt(data, key):
    cipher = AES.new(key, AES.MODE_CBC)
    ct_bytes = cipher.encrypt(pad(data.encode('utf-8'), AES.block_size))
    iv = cipher.iv
    return iv + ct_bytes

# 解密函數
def decrypt(encrypted_data, key):
    iv = encrypted_data[:AES.block_size]
    ct = encrypted_data[AES.block_size:]
    cipher = AES.new(key, AES.MODE_CBC, iv)
    return unpad(cipher.decrypt(ct), AES.block_size).decode('utf-8')

# 示例
key = get_random_bytes(16)
data = 'Hello, World!'
encrypted_data = encrypt(data, key)
decrypted_data = decrypt(encrypted_data, key)

print('原始數據:', data)
print('加密后的數據:', encrypted_data)
print('解密后的數據:', decrypted_data)

在這個示例中,我們使用了 Crypto 庫提供的 AES 加密和解密函數。首先,我們創建一個 AES 密鑰,然后使用加密函數對數據進行加密,最后使用解密函數對加密后的數據進行解密。

0
祁门县| 莱州市| 太原市| 叙永县| 刚察县| 汾西县| 新竹市| 江川县| 茌平县| 怀来县| 龙里县| 沭阳县| 离岛区| 东山县| 陇西县| 桐城市| 云阳县| 白河县| 塘沽区| 遵义县| 理塘县| 宁南县| 寻甸| 油尖旺区| 竹北市| 称多县| 西华县| 清徐县| 延长县| 保靖县| 荣成市| 鄂托克前旗| 林芝县| 灵台县| 广东省| 汾阳市| 江口县| 镶黄旗| 景泰县| 城固县| 无为县|