Hi all,
I’ve been reading in this list about crypting with RSA but I don’t get
it to work.
I beg your help. I believe one of the problems I’m having is that the
different values (.e , .n , .d ) are being given in decimal format,
while the java function will need hexaedcimal format.
Please, any hint or idea on how to encrypt/verify based on RSA with
Ruby? any other library? Or … how can I create an RSA private key
based on hexadecimal values of n, e and d? How can I convert decimal
values to hex?
Is there any way to generate the RSA Key with e, d and n? (instead
of using the pem file?
The output that I’m geetting is out of the “regular” character
range … Im getting some weird characters. I guess it is normal when
crypting, but with the javascript RSA model I don’t get any “weird
character”. Anyway to limit the output? This is the output in a
browser: http://i108.photobucket.com/albums/n27/jverger/rsaRuby.png
Finally … when using this code i get a different encrypted string
every time I run the code! How can that be? I mean, given the same
.pem file, i get a different encryption, although then, the
verification is fine.
Is there any way to generate the RSA Key with e, d and n? (instead
of using the pem file?
try PKey::RSA.generate(512)
The output that I’m geetting is out of the “regular” character
range … Im getting some weird characters. I guess it is normal when
crypting, but with the javascript RSA model I don’t get any “weird
character”. Anyway to limit the output? This is the output in a
browser: http://i108.photobucket.com/albums/n27/jverger/rsaRuby.png
You’re getting bytes, javascript gives you hex-encoded data
Finally … when using this code i get a different encrypted string
every time I run the code! How can that be? I mean, given the same
.pem file, i get a different encryption, although then, the
verification is fine.
PKCS#1 add random padding to the encrypted data to avoid situation,
when the same data is always encrypted as same ciphertext.
I’d encourage you to read some literature on the topic, as I wrote
some time ago (Asymmetric encryption options - Ruby - Ruby-Forum), encryption is
easy to get messed up, and your efforts would be ruined. See the
thread for some links. You need to understand the basics if you want
your encryption fulfill its purpose. At least read PKCS#1 standard.
You’ll learn about the padding schemes and various attacks on it
there.
Please don’t get me wrong, this is meant as an advice to not get
burned. I’ll be glad if I’m wrong in this case
If I use this: PKey::RSA.generate(512) I believe that I still have
a random key generated (instead of one with n, d and e desired). From
not much difference than using this: #openssl genrsa -out key.pem 256
PKey::RSA.new(File.open(“/key.pem”).read, nil)
Sorry, I misunderstood. This is how it could be done. I’ve just read
the sources, haven’t tried.
key = PKey.RSA.new
key.n, key.e, key.d = n,e,d
If you know a bit of C, read the sources of ruby, everything is there
namely: src/ext/openssl/ossl_pkey_rsa.c
Hi,
no problem … I truly understand what you mean by reading more.
Definitely your hint on PKCS#1 … is saved me some headaches that
I couldn’t understand why.
If I use this: PKey::RSA.generate(512) I believe that I still have
a random key generated (instead of one with n, d and e desired). From
not much difference than using this: #openssl genrsa -out key.pem 256
PKey::RSA.new(File.open("/key.pem").read, nil)
Finally, thanks for this pearl of wisdow … so I understand that
the crypted password in the client side (javascript) has to be
converted to bytes in order to be verified.
You’re getting bytes, javascript gives you hex-encoded data
thanks for your help,
Jean
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.