← Index
NYTProf Performance Profile   « line view »
For t/bug-md-11.t
  Run on Fri Mar 8 13:27:24 2024
Reported on Fri Mar 8 13:30:23 2024

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