1use strict; 2 3use Test; 4use vars qw($loaded); 5use Benchmark qw(timediff timestr); 6 7BEGIN { plan tests => 6 } 8END { print "not ok 1\n" unless $loaded } 9 10my $key = pack "H*", '1234567890ABCDEFFEDCBA0987654321'; 11my $plaintext = "The quick brown fox jumps over the lazy dog."; 12 13use Crypt::TEA; 14ok($loaded = 1); 15ok(my $tea = Crypt::TEA->new("abcdefghijklmnop")); 16ok("aaaabbbb", $tea->decrypt($tea->encrypt("aaaabbbb"))); 17 18eval 'use Crypt::CBC'; 19if ($@) { print "skipping Crypt::CBC test\n"; } 20else { 21 print "trying CBC... "; 22 my $c = Crypt::CBC->new($key, "TEA") || die "$!\n"; 23 my $t = $c->encrypt_hex($plaintext); 24 ok($plaintext, $c->decrypt_hex($t)); 25} 26 27print "\nBenchmarks\n"; 28{ 29 my $s = Benchmark->new; 30 31 for (my $i = 0; $i < 20000; $i++) { 32 my $in = pack "H*", "0123456789ABCDEF"; 33 34 my $c = Crypt::TEA->new($key); 35 $c->encrypt($in); 36 } 37 38 my $t = Benchmark->new; 39 40 print "Encrypting (20,000 cycles, uncached cipher): ", 41 timestr(timediff($t, $s)), "\n"; 42} 43{ 44 my $s = Benchmark->new; 45 46 for (my $i = 0; $i < 20000; $i++) { 47 my $in = pack "H*", "0123456789ABCDEF"; 48 49 my $c = Crypt::TEA->new($key); 50 $c->decrypt($in); 51 } 52 53 my $t = Benchmark->new; 54 55 print "Decrypting (20,000 cycles, uncached cipher): ", 56 timestr(timediff($t, $s)), "\n"; 57} 58{ 59 my $c = Crypt::TEA->new($key); 60 my $s = Benchmark->new; 61 62 for (my $i = 0; $i < 50000; $i++) { 63 my $in = pack "H*", "0123456789ABCDEF"; 64 $c->encrypt($in); 65 } 66 67 my $t = Benchmark->new; 68 69 print "Encrypting (50,000 cycles, cached cipher): ", 70 timestr(timediff($t, $s)), "\n"; 71} 72{ 73 my $c = Crypt::TEA->new($key); 74 my $s = Benchmark->new; 75 76 for (my $i = 0; $i < 50000; $i++) { 77 my $in = pack "H*", "0123456789ABCDEF"; 78 $c->decrypt($in); 79 } 80 81 my $t = Benchmark->new; 82 83 print "Decrypting (50,000 cycles, cached cipher): ", 84 timestr(timediff($t, $s)), "\n"; 85} 86