【发布时间】:2022-01-23 20:39:48
【问题描述】:
我正在使用chacha-poly1305 加密多个文件并使用 KDF 作为密码。我可以加密文件,但我如何用随机随机数解密。该函数说NEVER REUSE NONCE,然后我如何使用随机随机数进行解密。
如果我重复使用 nonce 进行文件加密,那么它有多安全。
类似的question已被询问,但解决方案并不好
例如代码
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305
kdfpass = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=5
)
password = kdfpass.derive(b'Password@123')
salt = b'123456789520'
original = b'Hellow123'
chacha = ChaCha20Poly1305(password)
encrypted = chacha.encrypt(os.urandom(12), original, salt)
print(encrypted)
decrypted = chacha.decrypt(os.urandom(12), encrypted, salt)
print(decrypted)
有没有办法保存 nonce 并检索它以进行解密。
还想知道 chacha-poly1305 是否足够好加密。
【问题讨论】:
-
错误是什么?
-
投票结束,因为不可复制。至于随机数警告,它说你不应该重复使用随机数使用相同的键。
-
@bereal 错误是 InvalidTag
-
当然,解密时必须使用与加密时相同的随机数。 永远不要用密钥重用 NONCE 指的是不同的加密。
-
好吧,我不明白这个问题。在示例中,您使用不同的随机数进行加密和解密,并想知道为什么它不起作用。解决方案:使用与相关加密相同的随机数进行解密。为此,必须将(非秘密)随机数与密文(通常连接)一起传递给解密方。
标签: python encryption cryptography nonce