いくつかの 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)
どうすればいいのですか?