Crypt::TEA - Tiny Encryption Algorithm


Crypt-TEA documentation Contained in the Crypt-TEA distribution.

Index


Code Index:

NAME

Top

Crypt::TEA - Tiny Encryption Algorithm

SYNOPSIS

Top

use Crypt::TEA;

$cipher = Crypt::TEA->new($key);

$ciphertext = $cipher->encrypt($plaintext);

$plaintext = $cipher->decrypt($ciphertext);

DESCRIPTION

Top

TEA is a 64-bit symmetric block cipher with a 128-bit key and a variable number of rounds (32 is recommended). It has a low setup time, and depends on a large number of rounds for security, rather than a complex algorithm. It was developed by David J. Wheeler and Roger M. Needham, and is described at <http://www.ftp.cl.cam.ac.uk/ftp/papers/djw-rmn/djw-rmn-tea.html>.

This module implements TEA encryption. It supports the Crypt::CBC interface, with the following functions.

Functions

blocksize

Returns the size (in bytes) of the block (8, in this case).

keysize

Returns the size (in bytes) of the key (16, in this case).

new($key, $rounds)

This creates a new Crypt::TEA object with the specified key. The optional rounds parameter specifies the number of rounds of encryption to perform, and defaults to 32.

encrypt($data)

Encrypts blocksize() bytes of $data and returns the corresponding ciphertext.

decrypt($data)

Decrypts blocksize() bytes of $data and returns the corresponding plaintext.

SEE ALSO

Top

<http://www.vader.brad.ac.uk/tea/tea.shtml>

Crypt::CBC, Crypt::Blowfish, Crypt::DES

ACKNOWLEDGEMENTS

Top

Dave Paris

For taking the time to discuss and review the initial version of this module, making several useful suggestions, and contributing tests.

Mike Blazer and Gil Cohen

For testing under Windows.

Tony Cook

For making the module work under Activeperl, testing on several platforms, and suggesting that I probe for features via %Config.

AUTHOR

Top

Abhijit Menon-Sen <ams@wiw.org>

Copyright 2001 Abhijit Menon-Sen. All rights reserved.

This software is distributed under the terms of the Artistic License <URL:http://ams.wiw.org/code/artistic.txt>.


Crypt-TEA documentation Contained in the Crypt-TEA distribution.

# $Id: TEA.pm,v 1.25 2001/05/21 17:32:59 ams Exp $
# Copyright 2001 Abhijit Menon-Sen <ams@wiw.org>

package Crypt::TEA;

use strict;
use Carp;
use DynaLoader;
use vars qw( @ISA $VERSION );

@ISA = qw( DynaLoader );
($VERSION) = q$Revision: 1.25 $ =~ /([\d.]+)/;

bootstrap Crypt::TEA $VERSION;

sub keysize   () { 16 }
sub blocksize () {  8 }

sub new
{
    my ($class, $key, $rounds) = @_;

    croak "Usage: ".__PACKAGE__."->new(\$key [, \$rounds])" unless $key;
    return Crypt::TEA::setup($key, $rounds || 32);
}

sub encrypt
{
    my ($self, $data) = @_;

    croak "Usage: \$cipher->encrypt(\$data)" unless ref($self) && $data;
    $self->crypt($data, $data, 0);
}

sub decrypt
{
    my ($self, $data) = @_;

    croak "Usage: \$cipher->decrypt(\$data)" unless ref($self) && $data;
    $self->crypt($data, $data, 1);
}

1;

__END__