Need help with Decryption using blowfish CBC

Hello all,

Hoping someone can help me out here. I've burned almost a week trying to figure out how to decrypt an image file that has been encrypted using Blowfish CBC.

I found some code on the net and have modified as follows:

    require 'openssl'     require 'digest/sha1'     ivArr = [0x0D,   0x0E,   0x0A,   0x0D,   0x0F,   0x0A,   0x0C,   0x0E     ]     iv = ivArr.pack("cccccccc")     bf = OpenSSL::Cipher::Cipher.new("BF-CBC")     key = Digest::SHA1.hexdigest("fOyBtMaN4u2T")     bf.decrypt     bf.key = key     bf.iv = iv     File.open("C:\\mapcrypt\\MAP.TIFF",'wb') do |enc|       File.open("C:\\mapcrypt\\EncryptedMAP.TIFF","rb") do |f|         size = File.size("C:\\mapcrypt\\EncryptedMAP.TIFF")         blocks = size / 8

        for i in 1..blocks           r = f.read(8)           cipher = bf.update(r)           enc << cipher         end

        if size%8 >0           r = f.read((size%8))           cipher = bf.update(r)           enc << cipher         end       end       enc << bf.final     end

However, this returns the error:   OpenSSL::CipherError: wrong final block length         from (irb):89:in `final'         from (irb):89         from (irb):72:in `open'         from (irb):72

I've also tried using the Blowfish library:     require 'crypt/blowfish'     blowfish = Crypt::Blowfish.new("fOyBtMaN4u2T")     blowfish.decrypt_file('C:\\mapcrypt\\11225035.00X', 'MAP.TIFF') But this returns the error:   NoMethodError: undefined method `%' for true:TrueClass         from c:/ruby/lib/ruby/gems/1.8/gems/crypt-1.1.4/./crypt/ blowfish.rb:84:in `decrypt_pair'         from c:/ruby/lib/ruby/gems/1.8/gems/crypt-1.1.4/./crypt/ blowfish.rb:82:in `downto'         from c:/ruby/lib/ruby/gems/1.8/gems/crypt-1.1.4/./crypt/ blowfish.rb:82:in `decrypt_pair'         from c:/ruby/lib/ruby/gems/1.8/gems/crypt-1.1.4/./crypt/ blowfish.rb:104:in `decrypt_block'         from c:/ruby/lib/ruby/gems/1.8/gems/crypt-1.1.4/./crypt/cbc.rb: 62:in `decrypt_stream'         from c:/ruby/lib/ruby/gems/1.8/gems/crypt-1.1.4/./crypt/cbc.rb: 99:in `decrypt_file'         from (irb):93

I'm using ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

Thanks in advance for your help,

Allen akt@frikshun.com

Hello all,

   File.open("C:\\mapcrypt\\MAP.TIFF",'wb') do |enc|      File.open("C:\\mapcrypt\\EncryptedMAP.TIFF","rb") do |f|        size = File.size("C:\\mapcrypt\\EncryptedMAP.TIFF")

i think you're overcomplicating.

  enc << bf.update(f.read) should work ok, without all that fiddling you're doing

Fred