Forum: Ruby RSA cross platform

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
054515cb92a507d2b549b8fe4c281fff?d=identicon&s=25 Ashik Ali (ashikalim)
on 2009-02-20 14:38
Attachment: mycert.pfx (2 KB)

I am using Debian OS and ruby 1.8 version .

I have attached .pfx certificate file . Which was created using openssl
command as follows ,
# create a file containing key and self-signed certificate
openssl req \
  -x509 -nodes -days 365 \
  -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

# export mycert.pem as PKCS#12 file, mycert.pfx
openssl pkcs12 -export \
  -out mycert.pfx -in mycert.pem \
  -name "My Certificate"

Using the openssl library in ruby I am able to do encryption and
decryption . Apart from this . I encrypted data in C#( windows ) using
this .pfx file . The c# coding is ,
 public string GetEncryptedText(string PlainStringToEncrypt)

    {

        X509Certificate2 x509_2 = new X509Certificate2("C:/mycert.pfx",
"paymate",X509KeyStorageFlags.MachineKeySet);

        X509Store store = new X509Store(StoreLocation.CurrentUser);

        store.Open(OpenFlags.ReadWrite);

            foreach (X509Certificate2 cert in store.Certificates)

            {

                if
(cert.SubjectName.Name.Contains(DigitalCertificateName))

                {

                    x509_2 = cert;

                    break;

                }

            }



            if (x509_2 == null)

                throw new Exception("No Certificate could be found in
name " + DigitalCertificateName);

        try

        {

            string PlainString = PlainStringToEncrypt.Trim();

            byte[] cipherbytes =
ASCIIEncoding.ASCII.GetBytes(PlainString);

            RSACryptoServiceProvider rsa =
(RSACryptoServiceProvider)x509_2.PublicKey.Key;

            byte[] cipher = rsa.Encrypt(cipherbytes, false);

            return Convert.ToBase64String(cipher);

        }

        catch (Exception e)

        {

                throw e;

        }

   }
Encrypted Data is :
"qLH9NZcxGL2vwuee4uryO8xphinBdE7XWttQmWfLhmOXVv5kFHW3JHTR0MiDfvONcHtPtvzKaCvgKlThd2XoNQm3K0EfRMKyokvDSWITQjTjHMOKyNGRCknsfm1dTrlZKU5eYNV+Qzn+MDdJ2gAb4vldbjFchgMFs2Qb2RJz3f4="

This encrypted data was created in C#(windows) using above code but
mycert.pfx was created in linux machine . Now I want to do
decryption in ruby linux .
I followed following decryption methods in ruby ,
create the privatekey.pem using openssl command is ,
openssl pkcs12 -in mycert.pfx -out private.pem -nodes
#give the password as "paymate"


ruby coding to decrypting is ,
private_key = OpenSSL::PKey::RSA.new(File.read("./private.pem"))
private_key.private_decrypt(Base64.decode64("qLH9NZcxGL2vwuee4uryO8xphinBdE7XWttQmWfLhmOXVv5kFHW3JHTR0MiDfvONcHtPtvzKaCvgKlThd2XoNQm3K0EfRMKyokvDSWITQjTjHMOKyNGRCknsfm1dTrlZKU5eYNV+Qzn+MDdJ2gAb4vldbjFchgMFs2Qb2RJz3f4="
))

#But it through me error

kindly provide me any other solution in ruby
054515cb92a507d2b549b8fe4c281fff?d=identicon&s=25 Ashik Ali (ashikalim)
on 2009-07-09 15:24
I have wrongly used the key .

use instead of private.pem , what you have created key file using
openssl .

But it has been working fine . No problem at all .

Above steps are useful for doing encryption in windows and decryption in
Linux especially on UNIX based opearating  systems .

cheers,
ashikali .
054515cb92a507d2b549b8fe4c281fff?d=identicon&s=25 Ashik Ali (ashikalim)
on 2009-07-09 15:26
Ashikali Ashikali wrote:
>
> I have wrongly used the key .
>
> use instead of private.pem , what you have created key file using
> openssl .
>
> But it has been working fine . No problem at all .
>
> Above steps are useful for doing encryption in windows and decryption in
> Linux especially on UNIX based opearating  systems .
>
> cheers,
> ashikali .

Yeah, It is working fine

With regards,
Veeramani. N
054515cb92a507d2b549b8fe4c281fff?d=identicon&s=25 Ashik Ali (ashikalim)
on 2009-07-09 15:28


Now RSA is possible in cross platform .

cheers,
vetrivel
This topic is locked and can not be replied to.