gpt4 book ai didi

python - pycrypto AES CBC

转载 作者:行者123 更新时间:2023-12-01 08:47:59 29 4
gpt4 key购买 nike

我使用 pycrypt 库编写了一些代码,我一定做错了什么,但我不知道我做错了什么。我(几乎)可以用错误的初始化向量解密消息,即使我相信我正在遵循他们的示例。

from Crypto.Cipher import AES
import os
from string import ascii_letters

key, iv = os.urandom(32), os.urandom(16)
cipher = AES.new(key, AES.MODE_CBC, iv)
plaintext = ascii_letters
plaintext += ' ' * (-len(plaintext) % 16) # Padding
ciphertext = cipher.encrypt(plaintext)

cipher = AES.new(key, AES.MODE_CBC, os.urandom(16))
text = cipher.decrypt(ciphertext)
# text[16:] = b'qrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ '

现在,除了解密文本的前 16 个字节之外,您可以通过完全随机选择 IV 来正确解密所有内容。有人可以帮我找出哪里出错了吗?

最佳答案

这对于密码 block 链接来说是正常的。在CBC解密中,IV仅需要重建第一 block 明文。其他明文 block 的计算实际上并不涉及IV。这是一个图表(来源:Wikimedia 用户 WhiteTimberwolf,公共(public)领域):

CBC decryption diagram

关于python - pycrypto AES CBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234913/

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