2013-04-14 18 views
5

Potrzebuję grać z niektórymi fragmentami AES.Odszyfrowywanie pojedynczego bloku AES w Ruby

Mam tekst szyfrowania c i klawisz k. Tekst szyfrowania został zaszyfrowany przy użyciu AES-CBC, z dołączonym IV. Nie dopełnienie jest obecny, długość zwykłego tekstu jest wielokrotnością 16.

Więc robię to:

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 

i to działa dobrze.

Teraz muszę zrobić tryb CBC ręcznie, więc potrzebuję "zwykłego" odszyfrowania AES pojedynczego bloku.

Próbuję to:

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 

I to nie z

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

jaki sposób mogę to zrobić?

+0

Co powiesz na brak ustawienia "iv"? ponieważ nie powinno być "iv" w trybie EBC. –

Odpowiedz