Crypt::Affine - Interface to the Affine cipher.
Version 0.02
The affine cipher is a type of mono alphabetic substitution cipher, wherein each letter in an alphabet is mapped to its numeric equivalent and then encrypted using a simple mathematical function. It inherits the weaknesses of all substitution ciphers. In the affine cipher the letters of an alphabet of size m are first mapped to the integers in the range 0..m-1. It then uses modular arithmetic to transform the integer that each plaintext letter corresponds to into another integer that correspond to a ciphertext letter.The function for encryption of a single letter can be defined as below:
E(x) = (mx + r) % l
where 'l' is the size of the alphabet and 'm' & 'r' are the key of cipher. The value 'm' must be choosen such that 'm' and 'l' are coprime.
Similarly the function for decryption of a single letter can be defined as below:
D(x) = (m ^ -1) (x - r) % l
where (m ^ -1) is the modular multiplicative inverse of 'm' modulo 'l' and it satisfies the equation below:
m (m ^ -1) % l = 1
The constructor expects the following parameters as described below in the table:
+----------+----------+----------------------------------------------------------------+ | Key | Required | Description | +----------+----------+----------------------------------------------------------------+ | m | Yes | Any positive number. | | r | Yes | Any positive number. | | reverse | No | 0 or 1, depending whether to use reverse set of alphabets. | | | | Default is 0. | | source | No | Filename with complete path containing comma seperated list of | | | | alphabets. By default it uses A-Z,a-z. | +----------+----------+----------------------------------------------------------------+ use strict; use warnings; use Crypt::Affine; my $affine = Crypt::Affine->new(m => 5, r => 8);
Encrypts the given string of alphabets ignoring any non-alphabets.
use strict; use warnings; use Crypt::Affine; my ($affine, $original, $encrypted); $affine = Crypt::Affine->new(m => 5, r => 8); $original = 'affine cipher'; $encrypted = $affine->encrypt($original); print "Original : [$original]\n"; print "Encrypted: [$encrypted]\n";
Decrypts the given string of alphabets ignoring any non-alphabets.
use strict; use warnings; use Crypt::Affine; my ($affine, $original, $encrypted, $decrypted); $affine = Crypt::Affine->new(m => 5, r => 8); $original = 'affine cipher'; $encrypted = $affine->encrypt('affine cipher'); $decrypted = $affine->decrypt($encrypted); print "Original : [$original]\n"; print "Encrypted: [$encrypted]\n"; print "Decrypted: [$decrypted]\n";
Mohammad S Anwar, <mohammad.anwar at yahoo.com>
<mohammad.anwar at yahoo.com>
Please report any bugs / feature requests to bug-crypt-affine at rt.cpan.org or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Crypt-Affine. I will be notified & then you'll automatically be notified of progress on your bug as I make changes.
bug-crypt-affine at rt.cpan.org
You can find documentation for this module with the perldoc command.
perldoc Crypt::Affine
You can also look for information at:
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Crypt-Affine
AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/Crypt-Affine
CPAN Ratings
http://cpanratings.perl.org/d/Crypt-Affine
Search CPAN
http://search.cpan.org/dist/Crypt-Affine/
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
To install Crypt::Affine, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Crypt::Affine
CPAN shell
perl -MCPAN -e shell install Crypt::Affine
For more information on module installation, please visit the detailed CPAN module installation guide.