1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
package Crypt::Mode::ECB;
### BEWARE - GENERATED FILE, DO NOT EDIT MANUALLY!
use strict;
use warnings;
our $VERSION = '0.087';
use Crypt::Cipher;
sub encrypt {
my ($self, $pt) = (shift, shift);
local $SIG{__DIE__} = \&CryptX::_croak;
$self->start_encrypt(@_)->add($pt) . $self->finish;
}
sub decrypt {
my ($self, $ct) = (shift, shift);
local $SIG{__DIE__} = \&CryptX::_croak;
$self->start_decrypt(@_)->add($ct) . $self->finish;
}
sub CLONE_SKIP { 1 } # prevent cloning
1;
=pod
=head1 NAME
Crypt::Mode::ECB - Block cipher mode ECB [Electronic codebook]
=head1 SYNOPSIS
use Crypt::Mode::ECB;
my $m = Crypt::Mode::ECB->new('AES');
#(en|de)crypt at once
my $ciphertext = $m->encrypt($plaintext, $key);
my $plaintext = $m->decrypt($ciphertext, $key);
#encrypt more chunks
$m->start_encrypt($key);
my $ciphertext = $m->add('some data');
$ciphertext .= $m->add('more data');
$ciphertext .= $m->finish;
#decrypt more chunks
$m->start_decrypt($key);
my $plaintext = $m->add($some_ciphertext);
$plaintext .= $m->add($more_ciphertext);
$plaintext .= $m->finish;
=head1 DESCRIPTION
This module implements ECB cipher mode. B<NOTE:> it works only with ciphers from L<CryptX> (Crypt::Cipher::NNNN).
B<BEWARE: ECB is inherently insecure>, if you are not sure go for L<Crypt::Mode::CBC>!
=head1 METHODS
=head2 new
my $m = Crypt::Mode::ECB->new($name);
#or
my $m = Crypt::Mode::ECB->new($name, $padding);
#or
my $m = Crypt::Mode::ECB->new($name, $padding, $cipher_rounds);
# $name ....... one of 'AES', 'Anubis', 'Blowfish', 'CAST5', 'Camellia', 'DES', 'DES_EDE',
# 'KASUMI', 'Khazad', 'MULTI2', 'Noekeon', 'RC2', 'RC5', 'RC6',
# 'SAFERP', 'SAFER_K128', 'SAFER_K64', 'SAFER_SK128', 'SAFER_SK64',
# 'SEED', 'Skipjack', 'Twofish', 'XTEA', 'IDEA', 'Serpent'
# simply any <NAME> for which there exists Crypt::Cipher::<NAME>
# $padding .... 0 no padding (plaintext size has to be multiple of block length)
# 1 PKCS5 padding, Crypt::CBC's "standard" - DEFAULT
# 2 Crypt::CBC's "oneandzeroes"
# 3 ANSI X.923 padding
# 4 zero padding
# 5 zero padding (+a block of zeros if the output length is divisible by the blocksize)
# $cipher_rounds ... optional num of rounds for given cipher
=head2 encrypt
my $ciphertext = $m->encrypt($plaintext, $key);
=head2 decrypt
my $plaintext = $m->decrypt($ciphertext, $key);
=head2 start_encrypt
$m->start_encrypt($key);
=head2 start_decrypt
$m->start_decrypt($key);
=head2 add
# in encrypt mode
my $plaintext = $m->add($ciphertext);
# in decrypt mode
my $ciphertext = $m->add($plaintext);
=head2 finish
#encrypt more chunks
$m->start_encrypt($key);
my $ciphertext = '';
$ciphertext .= $m->add('some data');
$ciphertext .= $m->add('more data');
$ciphertext .= $m->finish;
#decrypt more chunks
$m->start_decrypt($key);
my $plaintext = '';
$plaintext .= $m->add($some_ciphertext);
$plaintext .= $m->add($more_ciphertext);
$plaintext .= $m->finish;
=head1 SEE ALSO
=over
=item * L<CryptX|CryptX>, L<Crypt::Cipher>
=item * L<Crypt::Cipher::AES>, L<Crypt::Cipher::Blowfish>, ...
=item * L<https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_codebook_.28ECB.29>
=back
=cut
|