我需要玩一些AES片段.
我有一些密文c和一个密钥k.密文已使用AES-CBC加密,其中IV为前置.没有填充,纯文本的长度是16的倍数.
所以我这样做:
aes = OpenSSL::Cipher::Cipher.new("AES-128-CCB")
aes.decrypt
aes.key = k
aes.iv = c[0..15]
aes.update(c[16..63]) + aes.final
Run Code Online (Sandbox Code Playgroud)
它工作得很好.
现在我需要手动进行CBC模式,所以我需要对单个块进行"简单"的AES解密.
我正在尝试这个:
aes = OpenSSL::Cipher::Cipher.new("AES-128-ECB")
aes.decrypt
aes.key = k
aes.iv = c[0..15]
aes.update(c[16..31]) + aes.final
Run Code Online (Sandbox Code Playgroud)
它失败了
in `final': bad decrypt (OpenSSL::Cipher::CipherError)
Run Code Online (Sandbox Code Playgroud)
我该怎么做?