Crypt-DES_EEE3

 view release on metacpan or  search on metacpan

META.yml  view on Meta::CPAN

#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
name:         Crypt-DES_EEE3
version:      0.01
version_from: lib/Crypt/DES_EEE3.pm
installdirs:  site
requires:
    Crypt::DES:                    0
    Crypt::DES_EDE3:               0

distribution_type: module
generated_by: ExtUtils::MakeMaker version 6.12

Makefile.PL  view on Meta::CPAN

# $Id: Makefile.PL,v 1.1.1.1 2001/09/15 03:24:02 btrott Exp $

use ExtUtils::MakeMaker;
use strict;

WriteMakefile(
    NAME => 'Crypt::DES_EEE3',
    DISTNAME => 'Crypt-DES_EEE3',
    VERSION_FROM => 'lib/Crypt/DES_EEE3.pm',
    AUTHOR => 'Benjamin Trott <ben@rhumba.pair.com>',
    ABSTRACT => 'Triple-DES EEE encryption/decryption',
    PREREQ_PM => {
        'Crypt::DES' => 0,
        'Crypt::DES_EDE3' => 0,
    },
);

README  view on Meta::CPAN

This is Crypt::DES_EEE3, a module implementing Tripe-DES EEE
encryption and decryption, a derive of Crypt::DES_EDE3 by
Benjamin Troot <ben@rhumba.pair.com>.

This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

See <http://www.perl.com/perl/misc/Artistic.html>

Copyright 2003 by Kang-min Liu <gugod@gugod.org>.

lib/Crypt/DES_EEE3.pm  view on Meta::CPAN


package Crypt::DES_EEE3;
use strict;

use Crypt::DES;
use Crypt::DES_EDE3;
use vars qw( $VERSION @ISA );
$VERSION = '0.01';
@ISA= qw(Crypt::DES_EDE3);

sub encrypt {
    my($ede3, $block) = @_;
    $ede3->{des3}->encrypt(
        $ede3->{des2}->encrypt(
            $ede3->{des1}->encrypt($block)
        )
    );
}

lib/Crypt/DES_EEE3.pm  view on Meta::CPAN

            $ede3->{des3}->decrypt($block)
        )
    );
}

1;
__END__

=head1 NAME

Crypt::DES_EEE3 - Triple-DES EEE encryption/decryption

=head1 SYNOPSIS

    use Crypt::DES_EEE3;
    my $ede3 = Crypt::DES_EEE3->new($key);
    $ede3->encrypt($block);

=head1 DESCRIPTION

I<Crypt::DES_EEE3> implements DES-EEE3 encryption. This is triple-DES
encryption where an encrypt operation is encrypt-encrypt-encrypt, and
decrypt is decrypt-decrypt-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-EEE3 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-EEE3-CBC, or triple-DES in outer CBC mode.

=head1 USAGE

=head2 $ede3 = Crypt::DES_EEE3->new($key)

Creates a new I<Crypt::DES_EEE3> 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.

lib/Crypt/DES_EEE3.pm  view on Meta::CPAN

=head2 $ede3->blocksize

Returns the block size (8).

=head2 $ede3->keysize

Returns the key size (24).

=head1 LICENSE

Crypt::DES_EEE3 is free software; you may redistribute it and/or modify
it under the same terms as Perl itself.

=head1 AUTHOR & COPYRIGHTS

Copyright 2003 by Kang-min Liu <gugod@gugod.org>.

This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

See <http://www.perl.com/perl/misc/Artistic.html>

Thanks to the previous work of Crypt::DES_EDE3 by Benjamin Troot
<ben@rhumba.pair.com>

=cut

test.pl  view on Meta::CPAN

# $Id: test.pl,v 1.2 2001/09/15 03:38:24 btrott Exp $

use strict;

use Test;
use Crypt::DES_EEE3;
use strict;

BEGIN { plan tests => 7 }

my $des = Crypt::DES_EEE3->new( pack 'H64', '0123456789ABCDEF' x 4 );
ok($des);
ok($des->keysize, 24);

my $enc = $des->encrypt( _checkbytes() );
ok($enc);
my $dec = $des->decrypt($enc);
ok($dec);

ok( vec($dec, 0, 8) == vec($dec, 2, 8) );
ok( vec($dec, 1, 8) == vec($dec, 3, 8) );



( run in 0.373 second using v1.01-cache-2.11-cpan-9a3d99fc6dc )