From: Jean Verger Date: 2006-09-05T18:13:56+09:00 Subject: Re: RSA Java/Ruby Hi, thanks for your advices, 1. Is there any way to generate the RSA Key with e, d and n? (instead of using the pem file? 2. 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 3. 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. private_key = PKey::RSA.new(File.open("key.pem").read, nil) @pwdOriginal = "uno_dos_tres" @pwdCrypted_PubPriv = private_key.public_encrypt(@pwdOriginal) @pwdDecrypted_PubPriv = private_key.private_decrypt(@pwdCrypted_PubPriv) thanks again for your help, Jean On 9/5/06, Jan Svitok wrote: > On 9/4/06, Jean Verger wrote: > > 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? > > > > thanks a lot, > > > > Jean > > > > Some code: > > In the client javascript to encrypt the password (based on www.ohdave.com/rsa) > > > > In the server, the following code: > > > > # key.pem is generated with "openssl genrsa -out key512.pem 512" in the > > # command line > > private_key = PKey::RSA.new(File.open("key.pem").read, nil) > > > > # Crypting with the public, decrypting with the private > > @pwdOriginal = "uno_dos_tres" > > @pwdCrypted_PubPriv = private_key.public_encrypt(@pwdOriginal) > > @pwdDecrypted_PubPriv = private_key.private_decrypt(@pwdCrypted_PubPriv) > > > > # This values are generated out the .pem file > > @f_e = private_key.e > > @f_d = private_key.d.to_s > > @f_n = private_key.n > > @f_public = private_key.public_key > > @f_private = private_key.to_s > > Hi, > > 1. your code seems to work fine (if you fix the file name, add require > 'openssl' and include OpenSSL, alternatively prefix Pkey with > OpenSSL::) > > 2. dec-> hex: > "%x" % 123 #=> "7b" > "%X" % 123 #=> "7B" > > 3. Just a note: Java and Javascript are two different languages > > 4. Are you sure you want to send the private key over the wire? > > 5. The private key has another components besides e,d,n that speed up > the decryption/signature generation significantly. > >