2013-04-14 4 views
5

일부 AES 스 니펫으로 재생해야합니다.Ruby에서 단일 블록 AES 해독

암호문 c와 키 k가 있습니다. 암호문은 IV가 붙은 AES-CBC를 사용하여 암호화되었습니다.

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 

그것은 잘 작동하고 : 패딩은 일반 텍스트의 길이는 그래서이 일을 해요

16의 배수 인, 존재하지 않는다.

이제 손으로 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) 

내가 어떻게해야합니까 실패?

+0

'iv'를 설정하지 않으시겠습니까? 왜냐하면 EBC 모드에는 'iv'가 없어야하기 때문입니다. –

답변