AES能否通过选择明文和密钥生成任意密文?
Can AES generate arbitrary ciphertext by choosing plaintext and key?
我所有的困惑都来自以下示例:
key='c086e08ad8ee0ebe7c2320099cfec9eea9a346a108570a4f6494cfe7c2a30ee1'.decode('hex')
IV='78228d4760a3675aa08d47694f88f639'.decode('hex')
pad=lambda S: S+chr(16-len(S)%16)*(16-len(S)%16)
from Crypto.Cipher import AES
cipher=AES.new(key,AES.MODE_CBC,IV)
msg='NO, NOT SECRET!'
cip=cipher.encrypt(pad(msg))
那么 cip 就是“这是秘密吗??”。所以,不知道这纯属巧合,还是有某种算法可以通过正确选择密钥和明文来生成我想要的密文。
这有点令人费解,不是吗?诀窍是首先使用分组密码解密 IS THIS SECRET??
字符串。然后骗子可以通过更改 IV 来更改生成的随机“明文”。查找 CBC 模式以了解如何。
最后,骗子只需要在密文中加上一个加密的填充块就可以了。好的,既然这可能是你需要弄清楚的作业,请尝试自己创建一个如此奇怪的密文,并将其解密为你自己的特殊消息。
我所有的困惑都来自以下示例:
key='c086e08ad8ee0ebe7c2320099cfec9eea9a346a108570a4f6494cfe7c2a30ee1'.decode('hex')
IV='78228d4760a3675aa08d47694f88f639'.decode('hex')
pad=lambda S: S+chr(16-len(S)%16)*(16-len(S)%16)
from Crypto.Cipher import AES
cipher=AES.new(key,AES.MODE_CBC,IV)
msg='NO, NOT SECRET!'
cip=cipher.encrypt(pad(msg))
那么 cip 就是“这是秘密吗??”。所以,不知道这纯属巧合,还是有某种算法可以通过正确选择密钥和明文来生成我想要的密文。
这有点令人费解,不是吗?诀窍是首先使用分组密码解密 IS THIS SECRET??
字符串。然后骗子可以通过更改 IV 来更改生成的随机“明文”。查找 CBC 模式以了解如何。
最后,骗子只需要在密文中加上一个加密的填充块就可以了。好的,既然这可能是你需要弄清楚的作业,请尝试自己创建一个如此奇怪的密文,并将其解密为你自己的特殊消息。