NAME
Crypt::Affine - Interface to the Affine cipher.
VERSION
Version 0.02
DESCRIPTION
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
CONSTRUCTOR
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);
METHODS
encrypt()
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";
decrypt()
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";
AUTHOR
Mohammad S Anwar, <mohammad.anwar at yahoo.com>
BUGS
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.
SUPPORT
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
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
LICENSE AND COPYRIGHT
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.
DISCLAIMER
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.