/usr/share/perl5/Crypt/DES_EDE3.pm is in libcrypt-des-ede3-perl 0.01-1.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | # $Id: DES_EDE3.pm,v 1.2 2001/09/15 03:41:09 btrott Exp $
package Crypt::DES_EDE3;
use strict;
use Crypt::DES;
use vars qw( $VERSION );
$VERSION = '0.01';
sub new {
my $class = shift;
my $ede3 = bless {}, $class;
$ede3->init(@_);
}
sub keysize { 24 }
sub blocksize { 8 }
sub init {
my $ede3 = shift;
my($key) = @_;
for my $i (1..3) {
$ede3->{"des$i"} = Crypt::DES->new(substr $key, 8*($i-1), 8);
}
$ede3;
}
sub encrypt {
my($ede3, $block) = @_;
$ede3->{des3}->encrypt(
$ede3->{des2}->decrypt(
$ede3->{des1}->encrypt($block)
)
);
}
sub decrypt {
my($ede3, $block) = @_;
$ede3->{des1}->decrypt(
$ede3->{des2}->encrypt(
$ede3->{des3}->decrypt($block)
)
);
}
1;
__END__
=head1 NAME
Crypt::DES_EDE3 - Triple-DES EDE encryption/decryption
=head1 SYNOPSIS
use Crypt::DES_EDE3;
my $ede3 = Crypt::DES_EDE3->new($key);
$ede3->encrypt($block);
=head1 DESCRIPTION
I<Crypt::DES_EDE3> implements DES-EDE3 encryption. This is triple-DES
encryption where an encrypt operation is encrypt-decrypt-encrypt, and
decrypt is decrypt-encrypt-decrypt. This implementation uses I<Crypt::DES>
to do its dirty DES work, and simply provides a wrapper around that
module: setting up the individual DES ciphers, initializing the keys,
and performing the encryption/decryption steps.
DES-EDE3 encryption requires a key size of 24 bytes.
You're probably best off not using this module directly, as the I<encrypt>
and I<decrypt> methods expect 8-octet blocks. You might want to use the
module in conjunction with I<Crypt::CBC>, for example. This would be
DES-EDE3-CBC, or triple-DES in outer CBC mode.
=head1 USAGE
=head2 $ede3 = Crypt::DES_EDE3->new($key)
Creates a new I<Crypt::DES_EDE3> object (really, a collection of three DES
ciphers), and initializes each cipher with part of I<$key>, which should be
at least 24 bytes. If it's longer than 24 bytes, the extra bytes will be
ignored.
Returns the new object.
=head2 $ede3->encrypt($block)
Encrypts an 8-byte block of data I<$block> using the three DES ciphers in
an encrypt-decrypt-encrypt operation.
Returns the encrypted block.
=head2 $ede3->decrypt($block)
Decrypts an 8-byte block of data I<$block> using the three DES ciphers in
a decrypt-encrypt-decrypt operation.
Returns the decrypted block.
=head2 $ede3->blocksize
Returns the block size (8).
=head2 $ede3->keysize
Returns the key size (24).
=head1 LICENSE
Crypt::DES_EDE3 is free software; you may redistribute it and/or modify
it under the same terms as Perl itself.
=head1 AUTHOR & COPYRIGHTS
Crypt::DES_EDE3 is Copyright 2001 Benjamin Trott, ben@rhumba.pair.com. All
rights reserved.
=cut
|