gpt4 book ai didi

python - Pycryptodome 无法解密数据

转载 作者:太空宇宙 更新时间:2023-11-03 14:29:57 35 4
gpt4 key购买 nike

为什么cipher3无法解密密码数据?

  • cipher2 和 cipher3 使用相同的随机数,但 cipher3 无法解密数据

代码:

>>> from Crypto.Cipher import AES

>>> cipher = AES.new(b"M"*16, AES.MODE_EAX)
>>> cipher2 = AES.new(b"M"*16, AES.MODE_EAX, cipher.nonce)
>>> cipher3 = AES.new(b"M"*16, AES.MODE_EAX, cipher.nonce)

>>> data = cipher.encrypt(b"Hello")
>>> data2 = cipher.encrypt(b"World")

>>> cipher2.decrypt(data)
b'Hello'
>>> cipher3.decrypt(data2)
b'S\xa5\x92\xa2\x9a'
>>> cipher2.decrypt(data2)
b'World'

最佳答案

问题在于,您用于解密的密码对象(在您的情况下为cipher2cipher3)必须按照密文的顺序呈现生成(在您的情况下由cipher生成)。

相反,您将 data2 作为第一段密文传递给 cipher3,即使它是第二个生成的。

这适用于其他几种密码模式,而不仅仅是 EAX。

另请注意,EAX 是一种经过身份验证的密码模式:您应该使用decrypt_and_verify() 方法,除非您有充分的理由不这样做。

关于python - Pycryptodome 无法解密数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47366477/

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