python - 使用 ECB 模式加密解密字节时遇到问题
问题描述
我在使用 openssl crate 解密字节字符串时遇到问题。作为提示,这是针对 Cryptopals 挑战的,特别是设置 2 问题 2。文本文件已使用 CBC 模式的 AES 加密,但我猜单个块可以使用 ECB 解密。
我已经尝试过10.txt
使用 CBC 模式解密整个文件,并且我知道这是可行的。我还使用以下 Python 代码来验证相同字节的 ECB 解密是否也有效。
对于 Python 3:
from base64 import b64decode
from Crypto.Cipher import AES
def main():
key = b'YELLOW SUBMARINE'
with open("10.txt") as input_file:
data = b64decode(input_file.read())
data = data[0:AES.block_size]
print(data)
cipher = AES.new(key, AES.MODE_ECB)
x = cipher.decrypt(data)
print(x)
return
对于锈:
extern crate openssl;
use openssl::symm::decrypt;
use openssl::symm::{encrypt, Cipher};
static KEY: &'static [u8] = b"YELLOW SUBMARINE";
fn main() -> std::io::Result<()> {
// No idea why this OpenSSL call doesn't work.
let data = b"\x09\x12\x30\xaa\xde\x3e\xb3\x30\xdb\xaa\x43\x58\xf8\x8d\x2a\x6c";
let cipher = Cipher::aes_128_ecb();
let new_data = decrypt(cipher, KEY, None, data);
println!("error {:?}", new_data);
Ok(())
}
我希望看到这个函数在 Rust 中解密字节字符串,就像在 python 中一样。
解决方案
推荐阅读
- java - 算法无法对最终数组值执行
- node.js - Homebrew 是否有程序化 API
- android - Android 9 - Pie chmod 问题
- python - Python中具有不同整数的无限和近似的问题
- django - “'NoneType' 类型的对象没有 len()”错误
- javascript - 将多个对象的属性映射到具有相同属性名称的单个对象的有效方法
- python - 使用 Python 将数据从 csv 导入数据库
- python - 检查 pandas 查询是否既不是空也不是 NaN
- javascript - whereIn 查询不在 Node JS 中运行
- c - 为什么这个 yacc+lex 基本解析器不处理 CONTROL+D / EOF?