Initial Commit
This commit is contained in:
138
database/perl/vendor/lib/Crypt/Rijndael.pm
vendored
Normal file
138
database/perl/vendor/lib/Crypt/Rijndael.pm
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
package Crypt::Rijndael;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $VERSION = '1.15';
|
||||
|
||||
use XSLoader;
|
||||
|
||||
XSLoader::load('Crypt::Rijndael', $VERSION);
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Crypt::Rijndael - Crypt::CBC compliant Rijndael encryption module
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
Version 1.14
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Crypt::Rijndael;
|
||||
|
||||
# keysize() is 32, but 24 and 16 are also possible
|
||||
# blocksize() is 16
|
||||
|
||||
$cipher = Crypt::Rijndael->new( "a" x 32, Crypt::Rijndael::MODE_CBC() );
|
||||
|
||||
$cipher->set_iv($iv);
|
||||
$crypted = $cipher->encrypt($plaintext);
|
||||
# - OR -
|
||||
$plaintext = $cipher->decrypt($crypted);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This module implements the Rijndael cipher, which has just been selected
|
||||
as the Advanced Encryption Standard.
|
||||
|
||||
=over 4
|
||||
|
||||
=item keysize
|
||||
|
||||
Returns the keysize, which is 32 (bytes). The Rijndael cipher
|
||||
actually supports keylengths of 16, 24 or 32 bytes, but there is no
|
||||
way to communicate this to C<Crypt::CBC>.
|
||||
|
||||
=item blocksize
|
||||
|
||||
The blocksize for Rijndael is 16 bytes (128 bits), although the
|
||||
algorithm actually supports any blocksize that is any multiple of
|
||||
our bytes. 128 bits, is however, the AES-specified block size,
|
||||
so this is all we support.
|
||||
|
||||
=item $cipher = Crypt::Rijndael->new( $key [, $mode] )
|
||||
|
||||
Create a new C<Crypt::Rijndael> cipher object with the given key
|
||||
(which must be 128, 192 or 256 bits long). The additional C<$mode>
|
||||
argument is the encryption mode, either C<MODE_ECB> (electronic
|
||||
codebook mode, the default), C<MODE_CBC> (cipher block chaining, the
|
||||
same that C<Crypt::CBC> does), C<MODE_CFB> (128-bit cipher feedback),
|
||||
C<MODE_OFB> (128-bit output feedback), or C<MODE_CTR> (counter mode).
|
||||
|
||||
ECB mode is very insecure (read a book on cryptography if you don't
|
||||
know why!), so you should probably use CBC mode.
|
||||
|
||||
=item $cipher->set_iv($iv)
|
||||
|
||||
This allows you to change the initial value vector used by the
|
||||
chaining modes. It is not relevant for ECB mode.
|
||||
|
||||
=item $cipher->encrypt($data)
|
||||
|
||||
Encrypt data. The size of C<$data> must be a multiple of C<blocksize>
|
||||
(16 bytes), otherwise this function will croak. Apart from that, it
|
||||
can be of (almost) any length.
|
||||
|
||||
=item $cipher->decrypt($data)
|
||||
|
||||
Decrypts C<$data>.
|
||||
|
||||
=back
|
||||
|
||||
=head2 Encryption modes
|
||||
|
||||
Use these constants to select the cipher type:
|
||||
|
||||
=over 4
|
||||
|
||||
=item MODE_CBC - Cipher Block Chaining
|
||||
|
||||
=item MODE_CFB - Cipher feedback
|
||||
|
||||
=item MODE_CTR - Counter mode
|
||||
|
||||
=item MODE_ECB - Electronic cookbook mode
|
||||
|
||||
=item MODE_OFB - Output feedback
|
||||
|
||||
=item MODE_PCBC - ignore this one for now :)
|
||||
|
||||
=back
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<Crypt::CBC>, http://www.csrc.nist.gov/encryption/aes/
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
Should EXPORT or EXPORT_OK the MODE constants.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Currently maintained by Leon Timmermans C<< leont@cpan.org >>.
|
||||
|
||||
Previously maintained by brian d foy, C<< <bdfoy@cpan.org> >>.
|
||||
|
||||
Original code by Rafael R. Sevilla.
|
||||
|
||||
The Rijndael Algorithm was developed by Vincent Rijmen and Joan Daemen,
|
||||
and has been selected as the US Government's Advanced Encryption Standard.
|
||||
|
||||
=head1 SOURCE
|
||||
|
||||
This code is in Github:
|
||||
|
||||
git://github.com/leont/crypt-rijndael.git
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
This software is licensed under the Lesser GNU Public License v3 (29
|
||||
June 2007). See the included COPYING file for details.
|
||||
|
||||
=cut
|
||||
|
||||
Reference in New Issue
Block a user