| Crypt-DES_EDE3 documentation | Contained in the Crypt-DES_EDE3 distribution. |
Crypt::DES_EDE3 - Triple-DES EDE encryption/decryption
use Crypt::DES_EDE3;
my $ede3 = Crypt::DES_EDE3->new($key);
$ede3->encrypt($block);
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 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 encrypt and decrypt methods expect 8-octet blocks. You might want to use the module in conjunction with Crypt::CBC, for example. This would be DES-EDE3-CBC, or triple-DES in outer CBC mode.
Creates a new Crypt::DES_EDE3 object (really, a collection of three DES ciphers), and initializes each cipher with part of $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.
Encrypts an 8-byte block of data $block using the three DES ciphers in an encrypt-decrypt-encrypt operation.
Returns the encrypted block.
Decrypts an 8-byte block of data $block using the three DES ciphers in a decrypt-encrypt-decrypt operation.
Returns the decrypted block.
Returns the block size (8).
Returns the key size (24).
Crypt::DES_EDE3 is free software; you may redistribute it and/or modify it under the same terms as Perl itself.
Crypt::DES_EDE3 is Copyright 2001 Benjamin Trott, ben@rhumba.pair.com. All rights reserved.
| Crypt-DES_EDE3 documentation | Contained in the Crypt-DES_EDE3 distribution. |
# $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__