2013-04-14 38 views
5

Tôi cần phải chơi xung quanh với một số đoạn mã AES.Giải mã AES khối đơn trong Ruby

Tôi có một số văn bản mã hóa c và một khóa k. Văn bản mã hóa đã được mã hóa bằng AES-CBC, với IV được thêm vào trước. Không đệm có mặt, chiều dài văn bản đơn giản là một bội số của 16.

Vì vậy, tôi đang làm điều này:

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 

và nó làm việc tốt.

Bây giờ tôi cần phải thực hiện chế độ CBC bằng tay, vì vậy tôi cần giải mã AES "đơn giản" của một khối đơn.

Tôi đang cố gắng này:

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 

Và nó không thành công với

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

Làm thế nào để làm điều đó?

+0

Làm thế nào để không đặt 'iv'? vì không nên có 'iv' trên chế độ EBC. –

Trả lời

Các vấn đề liên quan