2013-04-14 12 views
5

Ich muss mit einigen AES-Schnipsel herumspielen.Einzel-Block-AES-Entschlüsselung in Ruby

Ich habe einige Chiffre Text c und einen Schlüssel k. Der verschlüsselte Text wurde unter Verwendung von AES-CBC verschlüsselt, wobei der IV vorangestellt ist. Keine Polsterung vorhanden ist, der Klartext der Länge ist ein Vielfaches von 16

So mache ich das:

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 

und es funktioniert gut.

Jetzt muss ich den CBC-Modus von Hand, so brauche ich "einfache" AES Entschlüsselung eines einzelnen Blocks.

Ich versuche dies:

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 

Und es schlägt mit

in `final': bad decrypt (OpenSSL::Cipher::CipherError) 

Wie kann ich es tun?

+0

Wie wäre es mit 'iv' nicht? weil es im EBC-Modus keine 'iv' geben sollte. –

Antwort