翻车记录之pad填充
翻车记录之pad填充
AiY0u前情提要:Cryptohack ECB-Oracle | AiY0u的博客
我们都知道可以根据密文字节数来判断明文的长度范围
倘若明文有33字节,那么就会分为16+16+1三部分,然后对第三部分做填充
会用到pad()函数
1 | from Crypto.Util.Padding import pad |
使用规则为
但是pad()有一个小特性
数据长度恰好是块大小的整数倍时,函数会添加一个完整的填充块。比如,数据长度为 16 字节,块大小也为 16 字节,填充后数据长度会变为 32 字节,新增的 16 个字节每个都为0x10
。
所以我们在推断明文长度时一定要看好边界情况