The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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:

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.