我需要玩一些 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
它工作得很好。
现在我需要手动执行 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
它失败了
in `final': bad decrypt (OpenSSL::Cipher::CipherError)
我该怎么做?