I'm trying to implement a simple encrypt and decrypt function in Rails.
I've found this Ruby script using OpenSSL::Cipher::Cipher.
When I try with the "wrong" KEY value, just to test it, I get an error
saying "bad decrypt". How can I avoid the error, or read the error so I
can stop the script?
···
--
Posted via http://www.ruby-forum.com/.
Pål Bergström wrote:
I'm trying to implement a simple encrypt and decrypt function in Rails.
I've found this Ruby script using OpenSSL::Cipher::Cipher.
When I try with the "wrong" KEY value, just to test it, I get an error
saying "bad decrypt". How can I avoid the error, or read the error so I
can stop the script?
dad? hehe. 
Should be "bad" of course.
···
--
Posted via http://www.ruby-forum.com/\.
Show us the code you're actually using and we can make constructive suggestions 
Also whilst the particular techniques may or may not be applicable, you can find some examples of doing OpenSSL crypto in the presentations linked in my sig: the Semantic DNS presentation has a substantial example (using AES).
Ellie
Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
···
On 2 May 2009, at 21:45, Pål Bergström wrote:
I'm trying to implement a simple encrypt and decrypt function in Rails.
I've found this Ruby script using OpenSSL::Cipher::Cipher.
When I try with the "wrong" KEY value, just to test it, I get an error
saying "bad decrypt". How can I avoid the error, or read the error so I
can stop the script?
----
raise ArgumentError unless @reality.responds_to? :reason
You need to do something along the lines of:
begin
c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
c.decrypt
c.key = key = Digest::SHA2.digest(passo)
d = c.update(etext)
d << c.final
d
rescue OpenSSL::CipherError => e
"incorrect password"
rescue Exception => e
"unknown error"
end
where you can have several rescue blocks, one for each exception recovery behaviour you have a use for.
Ellie
Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
···
On 3 May 2009, at 14:44, Pål Bergström wrote:
This is what I use. Would be good if I could catch the error and prevent
it from "hanging" the browser with an error (using Rails).
def self.decrypt(cstring)
cgi = CGI.new("html3")
passo = cgi.cookies["thecookie"].to_s
etext = Base64.decode64(cstring)
c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
c.decrypt
c.key = key = Digest::SHA2.digest(passo)
d = c.update(etext)
d << c.final
return d
end
----
raise ArgumentError unless @reality.responds_to? :reason
Excellent 
Ellie
Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
···
On 3 May 2009, at 19:03, Pål Bergström wrote:
Eleanor McHugh wrote:
begin
c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
c.decrypt
c.key = key = Digest::SHA2.digest(passo)
d = c.update(etext)
d << c.final
d
rescue OpenSSL::CipherError => e
"incorrect password"
rescue Exception => e
"unknown error"
end
Thanks. Got it working. 
----
raise ArgumentError unless @reality.responds_to? :reason