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?
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.
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?
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
raise ArgumentError unless @reality.responds_to? :reason
Eleanor McHugh wrote:
On 2 May 2009, at 21:45, P�l Bergstr�m wrote:
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).
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).
require ‘openssl’
require ‘digest/sha2’
require ‘cgi’
module Crypto
def self.encrypt(plain_text)
cgi = CGI.new("html3")
passo = cgi.cookies["thecookie"].to_s
c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
c.encrypt
c.key = key = Digest::SHA2.digest(passo)
e = c.update(plain_text)
e << c.final
e = Base64.b64encode(e)
return e
end
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
end
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).
end
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
raise ArgumentError unless @reality.responds_to? :reason
On 3 May 2009, at 19:03, Pål Bergström wrote:
"incorrect password"
rescue Exception => e
“unknown error”
end
Thanks. Got it working. 
Excellent 
Ellie
raise ArgumentError unless @reality.responds_to? :reason