我在使用openssl板条箱解密字节字符串时遇到麻烦。提醒您,这是针对Cryptopals挑战的,特别是第2个问题2。文本文件已使用AES以CBC模式加密,但是我想可以用ECB解密单个块。
我已经尝试过使用CBC模式解密整个10.txt
文件,并且我知道这是可行的。我还使用了以下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
对于Rust:
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(())
}
我希望看到该函数以与python相同的方式在Rust中解密字节字符串。