亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

python對稱加密怎樣實現認證

小樊
81
2024-10-26 19:12:20
欄目: 編程語言

在Python中,實現對稱加密并添加認證(即消息完整性檢查)通常涉及以下步驟:

  1. 選擇一個對稱加密算法,如AES(高級加密標準)。
  2. 生成一個隨機的密鑰,并使用該密鑰加密消息。
  3. 使用一個消息認證碼(MAC)或數字簽名算法來生成認證標簽。這可以確保消息在傳輸過程中未被篡改。
  4. 將加密后的消息和認證標簽一起發送給接收方。
  5. 接收方使用相同的密鑰和算法來解密消息并驗證認證標簽。

以下是一個使用pycryptodome庫實現AES對稱加密和HMAC認證的示例:

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

# 生成隨機密鑰
key = get_random_bytes(16)  # AES-128需要16字節密鑰

# 加密消息
message = b"Hello, world!"
cipher = AES.new(key, AES.MODE_CBC)
ct_bytes = cipher.encrypt(pad(message, AES.block_size))
iv = base64.b64encode(cipher.iv).decode('utf-8')
ct = base64.b64encode(ct_bytes).decode('utf-8')

# 生成HMAC認證標簽
hmac = HMAC.new(key, digestmod=hashlib.sha256)
hmac.update(ct_bytes)
auth_tag = base64.b64encode(hmac.digest()).decode('utf-8')

# 發送加密消息和認證標簽
print("Encrypted message:", ct)
print("IV:", iv)
print("Authentication tag:", auth_tag)

# 接收方使用相同的密鑰和算法來解密消息并驗證認證標簽
# 假設接收方已知iv和auth_tag
received_ct = base64.b64decode(ct)
received_iv = base64.b64decode(iv)
received_auth_tag = base64.b64decode(auth_tag)

cipher = AES.new(key, AES.MODE_CBC, received_iv)
pt = unpad(cipher.decrypt(received_ct), AES.block_size)

hmac = HMAC.new(key, digestmod=hashlib.sha256)
hmac.update(received_ct)
calculated_auth_tag = base64.b64encode(hmac.digest()).decode('utf-8')

if calculated_auth_tag == received_auth_tag:
    print("Message integrity verified.")
    print("Decrypted message:", pt.decode('utf-8'))
else:
    print("Message integrity check failed.")

請注意,這個示例僅用于演示目的。在實際應用中,您可能需要考慮更多的安全因素,如密鑰交換、加密模式的選擇、填充方案等。同時,確保在實際部署中使用安全的通信協議,如TLS/SSL。

0
阿克苏市| 沿河| 扎囊县| 莲花县| 阿瓦提县| 芦山县| 揭阳市| 龙南县| 阿克陶县| 道孚县| 翁牛特旗| 千阳县| 时尚| 崇义县| 宾阳县| 陕西省| 邳州市| 大渡口区| 吴桥县| 南通市| 郧西县| 理塘县| 新龙县| 麻阳| 弥渡县| 吐鲁番市| 大港区| 温宿县| 珠海市| 石屏县| 南靖县| 肥乡县| 龙川县| 万荣县| 葵青区| 青岛市| 吉木萨尔县| 萍乡市| 宁蒗| 呼伦贝尔市| 泾川县|