Perl6 RSA encryption
Perl6
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
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.md readme Sep 30, 2016

README.md

Crypt::RSA

Build Status

SYNOPSIS

Pure Perl 6 implementation of RSA public key encryption.


my $crypt = Crypt::RSA.new;
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);

DESCRIPTION

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.

EXAMPLES

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

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

References