feat: add new translate
This commit is contained in:
@@ -1 +1,38 @@
|
||||
# Challenge 16: CBC bitflipping attacks
|
||||
# 挑战16:CBC位翻转攻击
|
||||
|
||||
生成随机AES密钥。
|
||||
|
||||
结合你的填充代码和CBC代码来编写两个函数。
|
||||
|
||||
第一个函数应该接受任意输入字符串,前置字符串:
|
||||
|
||||
```
|
||||
"comment1=cooking%20MCs;userdata="
|
||||
```
|
||||
|
||||
...并附加字符串:
|
||||
|
||||
```
|
||||
";comment2=%20like%20a%20pound%20of%20bacon"
|
||||
```
|
||||
|
||||
函数应该转义";"和"="字符。
|
||||
|
||||
然后函数应该将输入填充到16字节AES块长度,并在随机AES密钥下加密它。
|
||||
|
||||
第二个函数应该解密字符串并查找字符";admin=true;"(或者,等价地,解密,用";"分割字符串,将每个结果字符串转换为2元组,并查找"admin"元组)。
|
||||
|
||||
根据字符串是否存在返回true或false。
|
||||
|
||||
如果你正确编写了第一个函数,应该*不*可能向其提供会生成第二个函数正在寻找的字符串的用户输入。我们必须破解密码才能做到这一点。
|
||||
|
||||
相反,修改密文(不知道AES密钥)来完成这个目标。
|
||||
|
||||
你依赖的事实是,在CBC模式中,密文块中的1位错误:
|
||||
|
||||
- 完全打乱发生错误的块
|
||||
- 在下一个密文块中产生相同的1位错误(/编辑)
|
||||
|
||||
## 停下来思考一下
|
||||
|
||||
在你实施这个攻击之前,回答这个问题:为什么CBC模式具有这个属性?
|
||||
|
||||
Reference in New Issue
Block a user