Perl6 RSA encryption
Perl 6
Switch branches/tags
Nothing to show
Latest commit 37d4dd6 Apr 27, 2017 @bduggan committed on GitHub Merge pull request #2 from samcv/SPDX-license
Use SPDX identifier in license field of META6.json
Failed to load latest commit information.
lib/Crypt cleanup, readme Aug 9, 2016
t tests Sep 30, 2016
.travis.yml travis Aug 9, 2016
LICENSE artistic license Sep 30, 2016
META6.json Use SPDX identifier in license field of META6.json Apr 27, 2017 readme Sep 30, 2016


Build Status


Pure Perl 6 implementation of RSA public key encryption.

my $crypt =;
my ($public,$private) = $crypt.generate-keys;

my $message = 123456789;
my $encrypted = $crypt.encrypt($message);
my $decrypted = $crypt.decrypt($encrypted);

my $message = 123456789;
my $signature = $crypt.generate-signature($message);
die unless $crypt.verify-signature($message,$signature);


This is a very simplistic implementation of the RSA algorithm for public key encryption.

By default, it relies on Perl 6 built-ins for randomness, but the constructor takes two optional arguments: random-prime-generator(UInt $digits) and random-range-picker(Range $range) that can be used instead. Any arguments to generate-keys (such as the number of digits or number of bits) will be passed on to random-prime-generator.


use Crypt::Random;
use Crypt::Random::Extra;

my $crypt =
    random-prime-generator => sub {
    random-range-picker => sub ($range) {
        my $size = log($range, 10).Int;
        my $rand = crypt_random_uniform($range.max,$size);
        return $range[$rand];