[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

file encryption/decryption needed

Venkat Bagam

9/18/2007 6:15:00 AM

Hi Folks,

Yesterday, in my ruby application, I was needed to
encrypt/decrypt a file. I searched for a 2-way encryption technique and
ended up with ezcrypto gem. I thought to give it a test. I was able to
encrypt the content and store it in a file but getting errors while
decrypting the file content and writing to console. I couldn't figure
out the problem. here is my code

require 'rubygems'
require 'ezcrypto'

@key = EzCrypto::Key.with_password "private documents","salted hash"
file1 = File.new("crypto.txt", "w")
@encrypted = @key.encrypt "These are private documents"
file1.puts @encrypted
file1.close
puts "Here is the content"
file2 = File.read("crypto.txt")
puts @key.decrypt file2

Can anyone figure out the problem? or suggest me a different crypting
technique other than ezcrypto or suggest me a ruby app implementing such
a requirement..
or a code snippet

any help appreciated

thanks&regards,
Venkat

Attachments:
http://www.ruby-...attachment/3...

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

3 Answers

Morton Goldberg

9/18/2007 12:20:00 PM

0

On Sep 18, 2007, at 2:15 AM, Venkat Bagam wrote:

> Hi Folks,
>
> Yesterday, in my ruby application, I was needed to
> encrypt/decrypt a file. I searched for a 2-way encryption technique
> and
> ended up with ezcrypto gem. I thought to give it a test. I was able to
> encrypt the content and store it in a file but getting errors while
> decrypting the file content and writing to console. I couldn't figure
> out the problem. here is my code
>
> require 'rubygems'
> require 'ezcrypto'
>
> @key = EzCrypto::Key.with_password "private documents","salted hash"
> file1 = File.new("crypto.txt", "w")
> @encrypted = @key.encrypt "These are private documents"
> file1.puts @encrypted
> file1.close
> puts "Here is the content"
> file2 = File.read("crypto.txt")
> puts @key.decrypt file2

I think puts is adding a "\n" at the end of the file you write out as
crypto.txt. So from the point of view of @key.decrypt the file has
been corrupted. Try the following:

<untested>
@key = EzCrypto::Key.with_password "private documents","salted hash"
File.open("crypto.txt", "w") do |file1|
@encrypted = @key.encrypt "These are private documents"
file1.write @encrypted
end
puts "Here is the content"
file2 = File.read("crypto.txt")
puts @key.decrypt file2
</untested>

I couldn't test the above code because I don't have the ezcrypt gem.

Regards, Morton

Axel Etzold

9/18/2007 3:05:00 PM

0


-------- Original-Nachricht --------
> Datum: Tue, 18 Sep 2007 15:15:28 +0900
> Von: Venkat Bagam <bagam_venkat@hotmail.com>
> An: ruby-talk@ruby-lang.org
> Betreff: file encryption/decryption needed

> Hi Folks,
>
> Yesterday, in my ruby application, I was needed to
> encrypt/decrypt a file. I searched for a 2-way encryption technique and
> ended up with ezcrypto gem. I thought to give it a test. I was able to
> encrypt the content and store it in a file but getting errors while
> decrypting the file content and writing to console. I couldn't figure
> out the problem. here is my code
>
> require 'rubygems'
> require 'ezcrypto'
>
> @key = EzCrypto::Key.with_password "private documents","salted hash"
> file1 = File.new("crypto.txt", "w")
> @encrypted = @key.encrypt "These are private documents"
> file1.puts @encrypted
> file1.close
> puts "Here is the content"
> file2 = File.read("crypto.txt")
> puts @key.decrypt file2
>
> Can anyone figure out the problem? or suggest me a different crypting
> technique other than ezcrypto or suggest me a ruby app implementing such
> a requirement..
> or a code snippet
>
> any help appreciated
>
> thanks&regards,
> Venkat
>
> Attachments:
> http://www.ruby-...attachment/3...
>
> --
> Posted via http://www.ruby-....

Dear Venkat,

I tried your code and I got a problem about "wrong final block length (OpenSSL::Cipher)", which comes from the fact that you are writing
an additional newline at the end of the encrypted text when
you store it in a file.
So read in the encrypted text from that file, chop off the last newline, and decrypt:

require 'rubygems'
require 'ezcrypto'
@key = EzCrypto::Key.with_password "mighty mouse","salted hash"
file1 = File.new("crypto.txt", "w")
@encrypted = @key.encrypt "This is my super-secret message"
file1.puts @encrypted
file1.close
file2=File.read("crypto.txt").chop
puts @key.decrypt(file2) # => "This is my super-secret message"


Best regards,

Axel


--
Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten
Browser-Versionen downloaden: http://www.gmx.net/de/...

Venkat Bagam

9/19/2007 8:03:00 AM

0

Dear Axel,

Thanks. It works great. I have been trying for two days but
unable to
figure out that. I need to be little bit careful with files.

once again, thanks to you and the forum....

regards,
venkat
--
Posted via http://www.ruby-....