From: Shannon Fang Date: 2006-04-18T22:53:29+09:00 Subject: Re: RSA Encryption Decryption ------=_NextPart_000_3c85_50df_742c Content-Type: text/plain; format=flowed Try mine :) You may use OpenSSL to generate key and use this program to do rsa. It's speed is quite ok for 2048 bit encryption. Shannon >From: "name pipe" >Reply-To: ruby-talk@ruby-lang.org >To: ruby-talk@ruby-lang.org (ruby-talk ML) >Subject: Re: RSA Encryption Decryption >Date: Tue, 18 Apr 2006 18:34:18 +0900 > >Thanks, but its bit confusing with new include files and stuff. Any simple >eg. which creates RSA public, private keys and encrypts/decrypts data ? > > >On 4/18/06, Roland Schmitt wrote: > > > > Hi, > > > > > > name pipe wrote: > > > Hi, > > > > > > I would like to know how can we do encryption and decryption using > > public > > > and private keys in ruby. Does ruby any RSA libraries for the same. A > > small > > > example would be quite helpful. > > > > > > Thanks > > > > > > > take a look at the openssl bindings for ruby: > > > > require "openssl" > > include OpenSSL > > include X509 > > include PKey > > > > cert = Certificate.new(File.read("server.cer")) > > private_key = RSA.new(File.read("server.cer.key")) > > message = "This is a test!" > > > > puts("--- Start private key encryption / public key decryption") > > crypt = private_key.private_encrypt(message) > > puts("Plain text ---------") > > puts(message) > > puts("Encrypted text------") > > puts(crypt) > > puts("Decryted text-------") > > puts(cert.public_key.public_decrypt(crypt)) > > > > puts("--- Start public key encryption / private key decryption") > > crypt = cert.public_key.public_encrypt(message) > > puts("Encrypted text------") > > puts(crypt) > > puts("Decryted text-------") > > puts(private_key.private_decrypt(crypt)) > > > > > > > > Regards, > > Roland > > > > ------=_NextPart_000_3c85_50df_742c Content-Type: application/octet-stream; name="rsatest.rb" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rsatest.rb" Y2xhc3MgUlNBDQogIGF0dHJfYWNjZXNzb3IgOnB1YmxpY19rZXksIDpwcml2 YXRlX2tleSwgOm1vZHVsdXMNCiAgcHJpdmF0ZQ0KICBkZWYgc3RyX3RvX251 bShzdHIpDQogICAgICBudW0gPSAwDQogICAgICBzdHIuZWFjaF9ieXRleyB8 YnwgbnVtID0gKG51bTw8OCl8YiB9DQogICAgICBudW0NCiAgZW5kDQogIGRl ZiBudW1fdG9fc3RyKG51bSkNCiAgICAgIHJlcyA9ICcnDQogICAgICB3aGls ZSBudW0+MA0KICAgICAgICAgIHJlcyA8PCAobnVtJjB4RkYpLmNocg0KICAg ICAgICAgIG51bSA+Pj0gOA0KICAgICAgZW5kDQogICAgICByZXMucmV2ZXJz ZSENCiAgZW5kDQogIGRlZiBtb2RleHAoeiwgbiwgcSkNCiAgICB5ID0gMQ0K ICAgIHdoaWxlIG4gIT0gMA0KICAgICAgaWYgblswXSA9PSAxDQogICAgICAg IHkgPSAoeSAqIHopICUgcQ0KICAgICAgZW5kDQogICAgICBuID0gbiA+PiAx ICANCiAgICAgIHogPSAoeiAqIHopICUgcQ0KICAgIGVuZA0KICAgIHJldHVy biB5DQogIGVuZA0KICBwdWJsaWMNCiAgZGVmIGNyeXB0KHN0ciwga3R5cGUg PSBuaWwpDQogICAga2V5ID0gKGt0eXBlID09IDpwcml2YXRlKSA/IEBwcml2 YXRlX2tleSA6IEBwdWJsaWNfa2V5DQogICAgbnVtX3RvX3N0cihtb2RleHAo c3RyX3RvX251bShzdHIpLCBrZXksIEBtb2R1bHVzKSkgDQogIGVuZA0KZW5k DQoNCnJzYSA9IFJTQS5uZXcNCnJzYS5wdWJsaWNfa2V5ID0gMHgxMDAwMQ0K cnNhLnByaXZhdGVfa2V5ID0gMHgwMDkzYTRiMzE0ZTY1MTEzMmMwZTg4N2I5 NGQ1M2U3ZmE1OWNlOWE3YTBjOGU4NmIxNTQ0YjAyMjIyNmYxMmUzNzk3YmRj Y2Y0ZTEzYTNhZTZiY2M1NGRjOTlhZjgzMTY5MzU2NDMyMDY4NWRkOWY5ZjFk MmI1OGJkZmNiMTc5MDhkODc1Y2VlYmYzOGQ3ZTBhODBkOTVkOGFmYWIwNmEw MzdhYjUzODhhZDdjY2Q3ZWM0Yzk1YzQyNGRlYmVkZWYyMjkyYWQ1NGEzNDE4 YmUwNTkwZjMyODlhZGViMjE4MTE1MzkzZDYxNGE4ZDBmNWZiNTM4MjdiYWZh NTQzZmU1NjM0MTExNGE5Y2VkNGJhYjFlYTU0MzNkMTY2ZDBjN2UxNTE3OTM1 MzZjODcwNDY2MDBlMTkzNzA0ODI5ODBkOWQxMWUwNzg4ZTY2MTRiYWY4ZGIx NWY3OTMyMGM1ODMxZDZhMTBhMDBjNTkyOWE5MTFmYTBlZjdmYWFkYjBmNzM5 NGNjY2FmOGIxNmQ2ZTg1YzgxNDFiMzg5MmIwNTg4YTM3YWI1YzZmNTM4OGI2 YTI4OTJiYWVjYjEwNWVmMmM3ODQxODA3MjZlYzAxNTQ3MzI2NzU5YTA4OTA3 YWJhZTcxZWU5YjQ5ZjhlOTMzZWQzODRkZWE2MDQ3MmMzYzQ3ZWUxDQpyc2Eu bW9kdWx1cyA9IDB4MDBjYTA0ZGI2MTcwMThhZGY3ZmIzMTRiYjQ5OTk1YWNk ZTE3MThhODkxMTUwOWM5NDlmNzJhY2NkYmNlNWQ1MmJiZjNhN2IzMGNkZWI3 NzQ4ZmUwMWIxMjMwZjgzY2Y2OTljYmJhZjU5Y2MyNTQwMjJkZmFiZjdmMjc5 ODE3ZjZkNThiYjg4ZmRjOGQxMzliN2VmNzkyMWEwNDEyM2EzMzZiMjdjZjI2 MDVlNWRiYzU0ODkzZTgyZTg4NjY4ZTI3ZjMyM2FmY2Q4YzU2ZTZkZjllZWY5 YWY3NmY0OWQ4OTZhYzgyYjQ3YzcyYjBjZTNmZDRhZjViN2I3YjM1YTg1ZDVk OGMyNDg3OGViYjVlNTY3YWRlNjYzM2EwNTEwZmE4YzQ3NjkxM2QwYTkzZDAy MDQ1ODA0NzAzZTVlZjMwYTUyOWM2OTVmNmM4MTM2ODNhYjk1YWU4YTE4M2I5 YWU2ZGU2NWU4MDlkMGVkZTExYzRlZThlMzZiZjgyYmJiOTYyZWUwMWFhZWM2 MDAzZDkxN2IxNThhOTZmNjk1NGFkZTFlMTc1Y2M0MWExMTI3NmY1MThmNjdh OWQyMmExZDA1OGYwZTE0Mjk0ZGVmZTc1OWY0NWNhMGM0YWM0NWMxNGIyNjFl NjU3MWQ5YzNiY2JkZGYyMTUwMzE3MTYxZWQ4NTM2NQ0KDQpzID0gInRoaXMg aXMgYSB0ZXN0Ig0KcHV0cyAiUGxhaW4gVGV4dDpcbiN7c30iDQpzID0gcnNh LmNyeXB0KHMsIDpwdWJsaWMpDQpwdXRzDQpwdXRzICJDaXBoZXIgVGV4dDpc biN7c30iDQpwdXRzDQpwdXRzICJQbGFpbiBUZXh0IGFnYWluOlxuI3tyc2Eu Y3J5cHQocywgOnByaXZhdGUpfSINCg== ------=_NextPart_000_3c85_50df_742c--