Perl Requires Chilkat v11.0.0+
Chilkat2 Perl
RSA Encrypt String to Encoded Result and Reverse
See more RSA Examples
Demonstrates how to RSA encrypt a string to a base64 encoded result, and the reverse.Chilkat Perl Downloads
use strict;
use warnings;
use Chilkat2;
# The RSA public key is used for encryption, and the private key for decryption.
# The public key's role is to make encryption accessible to anyone while ensuring that
# only the private key holder can decrypt the messages.
# The public key is designed to be widely distributed so anyone can use it to encrypt messages
# intended for the owner of the private key.
# Load our 2048-bit RSA public key.
my $pubKey = Chilkat2::PublicKey->new;
# In all Chilkat methods expecting a path, you pass either absolute or relative paths.
my $success = $pubKey->LoadFromFile('rsaKeys/myTestRsaPublic.pem');
if (!$success) {
print $pubKey->LastErrorText, "\n";
exit;
}
my $rsa = Chilkat2::Rsa->new;
# Tell RSA to use the public key.
$rsa->UsePublicKey($pubKey);
# RSA encryption is for small amounts of data, on the order of 200 bytes or less.
# The maximum number of bytes that can be RSA encrypted depends
# on the RSA key size and padding scheme (OAEP padding vs PKCS#1 v1.5 padding).
# For specific limits, see: RSA Encryption Maximum Number of Bytes
# Encrypt the utf-8 byte representation of the string.
$rsa->Charset('utf-8');
$rsa->EncodingMode('base64');
# Be Careful when Using non-us-ascii String Literals in Source Code
my $encryptedB64 = $rsa->EncryptStringENC('Élève français dîne à côté d’un café où l’on sert déjà du gâteau au chocolat et des éclairs délicieux', 0);
# ------------------------------------------------------------------------------------------------------------------------
# Let's decrypt, which requires the matching private key...
# Load the matching 2048-bit RSA private key.
my $privKey = Chilkat2::PrivateKey->new;
my $password = 'secret';
$success = $privKey->LoadAnyFormatFile('rsaKeys/myTestRsaPrivate.pem', $password);
if (!$success) {
print $privKey->LastErrorText, "\n";
exit;
}
# Tell the RSA object to use the private key.
$rsa->UsePrivateKey($privKey);
# Indicate that after decrypting the resultant decrypted bytes contains the utf-8 byte representation of the text.
$rsa->Charset('utf-8');
$rsa->EncodingMode('base64');
my $originalText = $rsa->DecryptStringENC($encryptedB64, 1);
if (!$success) {
print $rsa->LastErrorText, "\n";
exit;
}
print 'Original text = ', $originalText, "\n";
print "Success.\n";