I advice you check this module: Crypt::OpenSSL::RSA, Crypt::OpenSSL::Bignum, or check how I use it one of my repository in github: Perl backend for Jcryption
Create RSA by parameters n,e,d
use strict;
use Crypt::OpenSSL::Bignum;
use Crypt::OpenSSL::Random;
use Crypt::OpenSSL::RSA;
my $param_ref = {
n => 'C8F19E3A7C18A5FE6D1DE07926F4E6403EA6558EE4892D29155F2C52678E210FE5D61DBC9EC77F2DD39FC8D9F2717F23629B7E18BDB38AADF9FC5BF1CA968C67F4BF0F2D6657E1374A845048B6CDCB2B8B2B3F31BF7F134A11B9A063EB7C326B27C0027955637E6089293F5F4CD40F5B91142BBA61B8E473A8D14B447896B5FD',
e => '010001',
d => '574C612997703DED630A6FD3329182D6B6611D1A8F3EE957C7E9292043CD03A01C82013948E1F2E6BDE1D5289AA3A450832E7A81D528833F4233D8DE1ADD7CF1878CBACDE64DE4364F8B73093753D6E322732EAEC942281CE4AF55D212E77EC4A108708864D3F86A67C63FBE8206A543A42ABF45E56C1E41A2F2BA0CCC1C8001',
};
my $n = Crypt::OpenSSL::Bignum->new_from_hex($param_ref->{n});
my $e = Crypt::OpenSSL::Bignum->new_from_hex($param_ref->{e});
my $d = Crypt::OpenSSL::Bignum->new_from_hex($param_ref->{d});
my $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters($n, $e, $d);
printf "private key is: %s\n", $rsa->get_private_key_string();
printf "public key (in PKCS1 format) is: %s\n", $rsa->get_public_key_string();
Get key parameters from RSA object
use strict;
use Crypt::OpenSSL::Bignum;
use Crypt::OpenSSL::Random;
use Crypt::OpenSSL::RSA;
my $rsa = Crypt::OpenSSL::RSA->generate_key(2048);
my ($n, $e, $d, $p, $q) = $rsa->get_key_parameters();
printf "private key is: %s\n", $rsa->get_private_key_string();
printf "public key (in PKCS1 format) is: %s\n", $rsa->get_public_key_string();
Crypt::OpneSSL::RSA
to encrypt/decrypt the message with n+e and d+e values? I need to allow public to decrypt message and encryption makes private, so I cannot distribute private key from$rsa->get_private_key_string
. Please advice. – Druid