Forum: Ruby decrypt challenge - perl encrypt with ruby decrypt

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Aec10c73877ea116bab759e060b2fcb3?d=identicon&s=25 (Guest)
on 2007-06-14 01:00
(Received via mailing list)
Ok, so I am trying integrate with someone who is sending me a string
that is triple des encrypted thru perl.
I need to decrypt the string thru ruby.

I have had no luck decrypting, so decided I would try to encrypt in
ruby as a sanity check...of course...I get different results.

HELP please :)

Here is the perl...then the ruby.  Oh yes, and I am so glad there are
no ; in ruby !

#========================= perl
use Crypt::TripleDES;
use URI::Escape;

my $token="1234567890";

my $des = new Crypt::TripleDES;
my $string= $des->encrypt3($token,$key);
#print "string=$string\n\n";
print "string=$string\n\n";

>> string=%0AP%91%06%0APq%7D%12%E83%DD%87%1C%7Cz

#========================= ruby
require 'openssl'
require 'cgi'
require 'uri'

token = "1234567890"

e = 'DES-EDE3'
e.encrypt key
s = e.update token
s <<
puts URI.escape(s)
F54bc341bc19c48e5860fda022663795?d=identicon&s=25 Nathan Taylor (shadowcipher)
on 2007-06-14 16:48
(Received via mailing list)
The problem with your code is that you are using two different

You are implementing TripleDES in ECB mode in perl, and TripleDES in
DES_EDE3 mode in ruby.  The latter being a block cipher that is
data to be fed to it in 8-bit blocks one at a time.  To match them up
would have to use Crypt::DES_EDE3 in perl, however that would mean your
would have to be supplied in 8-bit blocks which would be very
unless you were operating on binary data and supplying some kind of
as needed.  I would suggest finding out how to implement the ECB mode in
ruby to match up with your perl code.  I looked online at
couldn't find a list of ciphers that the .new method accepts.  Good

- Nathan
Cf6d0868b2b4c69bac3e6f265a32b6a7?d=identicon&s=25 Daniel Martin (Guest)
on 2007-06-16 15:31
(Received via mailing list)
"Nathan Taylor-Hoover" <> writes:

> The problem with your code is that you are using two different encryption
> algorithims.

Not quite; see - in brief:

 des-ede3-cbc       Three key triple DES EDE in CBC mode
 des-ede3           Three key triple DES EDE in ECB mode
 des3               Alias for des-ede3-cbc
 des-ede3-cfb       Three key triple DES EDE CFB mode
 des-ede3-ofb       Three key triple DES EDE in OFB mode

So the cipher being used should in theory work, but it clearly doesn't
at all.  I can't find any decent information relating what
Crypt:TripleDES does to an equivalent operation for openssl. (openssl
in ruby or otherwise) I also don't know that passing the key as the
argument to encrypt is the appropriate behavior.

Openssl has both keys and initial values, which are derived from
passphrases in a manner I don't understand.  Crypt::TripleDES uses
only a key, and I don't know how those two correspond to each other.
This topic is locked and can not be replied to.