http://www.perlmonks.org?node_id=11132282


in reply to Re^4: RSA encrypt but no decrypt. What is the problem? (updated)
in thread RSA encrypt but no decrypt. What is the problem?

Can I do without this function in Perl and set the parameters n, e, d myself?

Yes, my code outputs these parameters and like I said, when I used them in your code, it worked, meaning the values of your parameters appear to be incorrect, but otherwise initializing the keys like you did basically works.

Does your method mean that in Perl for RSA I must use the generate_key() function to generate keys?

No, there are plenty of other ways to generate RSA keys. Though I can't test right now to confirm, you should be able to generate an RSA key with openssl-genrsa and get its paramaters with openssl-rsa's -text option*. But again, the PEM representation of keys (-----BEGIN RSA PRIVATE KEY----- and so on) would be my choice.

I tried adding one line to your code: my $plaintext = $rsa2->public_decrypt($ciphertext); but unfortunately this script gives an error

That a message enrypted with a public key needs to be decrypted with the matching private key is a pretty essential fact of Public-key cryptography, so you probably want to read up on that. Perhaps you're thinking of Symmetric-key algorithms instead? RSA is not one of those. Maybe have a look at e.g. Crypt::Cipher::AES?

Minor edit for clarification in first paragraph.

* Update 2: Confirmed: openssl genrsa 512 | openssl rsa -text -noout gives the following values: modulus=n, publicExponent=e, privateExponent=d, prime1=p, prime2=q. Of course you probably want to use more than 512 bits, but I just did that to be in line with your example in the root node.