gpt4 book ai didi

python - 加密模块是 Fernet 安全的,我可以用该模块进行 AES 加密吗?

转载 作者:太空狗 更新时间:2023-10-30 02:28:37 25 4
gpt4 key购买 nike

我可以使用 Cryptography 模块进行 AES 加密吗?什么是 Fernet?它是否像 AES 加密一样安全?

最佳答案

在 GCM 出现之前,Fernet 更有意义,因为自己正确实现 CBC + HMAC 很困难,而且 CBC 模式需要填充到 16 字节 block 。

它仍然是安全的,但我不建议将它用于新系统,因为 AES256-GCM 将加密和身份验证结合到相同的标准协议(protocol)中,可以由浏览器(Javascript 微妙的加密 API)和所有其他加密库和加密/解密工具,而不仅仅是 Python 密码模块。 GCM 模式也快得多,使用 AES-NI 时达到每秒几千兆字节。

不幸的是,它隐藏在 hazmat 模块的深处:

import secrets
from cryptography.hazmat.primitives.ciphers.aead import AESGCM

# Generate a random secret key (AES256 needs 32 bytes)
key = secrets.token_bytes(32)

# Encrypt a message
nonce = secrets.token_bytes(12) # GCM mode needs 12 fresh bytes every time
ciphertext = nonce + AESGCM(key).encrypt(nonce, b"Message", b"")

# Decrypt (raises InvalidTag if using wrong key or corrupted ciphertext)
msg = AESGCM(key).decrypt(ciphertext[:12], ciphertext[12:], b"")

即使使用相同的 key 和相同的消息,密文也将始终完全不同(因为随机数不同)。请注意,密文始终比消息长 28 个字节,因此如果需要隐藏消息长度,您可以在加密前将所有消息填充为相同长度。

关于python - 加密模块是 Fernet 安全的,我可以用该模块进行 AES 加密吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36117046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com