[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Base64.decode different behaviour

Filip Koczorowski

9/13/2006 8:42:00 AM

I am trying to read a value stored in an encrypted cookie in Ruby. The
cookie value is 3DES-encrypted and then Base64-encoded.

First, I stored the value of a cookie in a file. And then I managed to
decode and decrypt it successfully using this code:

key64 = "3DES-CRYPT-KEY-BASE64-ENCODED-READ-FROM-FILE"
key = Base64.decode64 key64

cookie64 = "BASE64-ENCODED-COOKIE-VALUE-READ-FROM-FILE"
cookie = Base64.decode64 cookie64

des = OpenSSL::Cipher::DES.new(:EDE3)
des.decrypt
des.key = key
des.iv = key[0..7]

tmp = des.update(cookie)
value = tmp
value << des.final

Unfortunately, after running the above code in a Rails controller I get
an exception "wrong final block length" thrown from the last line. Could
anyone tell me, why the code works, but when run in a Rails controller
it doesn't? The only change in Rails version being:

cookie64 = cookies['COOKIE-NAME']

Trying to find some clue, I commented out the lsat line and then I got a
too short output - it's missing some data from the input value (which is
understandable, because "final" is needed for proper decrypting). For
example:
input string = "qwerty" -> 3DES (in java) -> Base64 (in java) ->
de-Base64 (in ruby) -> de-3DES (in ruby) -> "qwer"

--
Posted via http://www.ruby-....