ECB Mode介绍
ECB Mode
简介
ECB 通过将明文分成n个大小的块,将每个块单独加密,从而得到一个密文。如果明文不能被块大小整除,那
么ECB模式则会通过附加一些字节从而使其能够被整除
在ECB中,每个块是单独加密的,所以其相互独立
获取块的大小和明文的大小
获取块大小应为解决ECB问题的第一步,可以通过纯手动来求解块的字节和明文的字节,假如加密输出的长度为八个字节,我在明文中添加一个字节,加密输出的长度没改变,但是在添加三个字节的时候,密文的长度就发生了改变,那么块的字节数就是密文突变字节的长度,从而让我们得到了块的字节大小
以https://aes.cryptohack.org/ecb_oracle
题目作为示例
以十六进制形式输入12个a时,则认为输入了6个字节,此时返回的密文十六进制长度为64,即32个字节
继续尝试输入第7个字节:
很容易可以发现,此时的密文长度发生了突变,并且是从32字节突变为48字节,由此可以定义块的长度为16字节。而因为在输入第七个字节时才发生的突变,由此可见,明文的字节数应为26(26+6=32)
由上述过程我们得到了块的大小 16字节 明文大小 26字节
可以通过强行补充字节来暴力破解出明文,即一个个字符求解。即输入15个字节时查看一次明文,然后遍历所有字符去得到明文的单个字节,从而依次求解得到明文
1 | import requests |
代码运行时间较长,待优化
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Starcraft planet!