# $Id: TEA.pm,v 1.25 2001/05/21 17:32:59 ams Exp $ # Copyright 2001 Abhijit Menon-Sen 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__ =head1 NAME Crypt::TEA - Tiny Encryption Algorithm =head1 SYNOPSIS use Crypt::TEA; $cipher = Crypt::TEA->new($key); $ciphertext = $cipher->encrypt($plaintext); $plaintext = $cipher->decrypt($ciphertext); =head1 DESCRIPTION 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 . This module implements TEA encryption. It supports the Crypt::CBC interface, with the following functions. =head2 Functions =over =item blocksize Returns the size (in bytes) of the block (8, in this case). =item keysize Returns the size (in bytes) of the key (16, in this case). =item 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. =item encrypt($data) Encrypts blocksize() bytes of $data and returns the corresponding ciphertext. =item decrypt($data) Decrypts blocksize() bytes of $data and returns the corresponding plaintext. =back =head1 SEE ALSO Crypt::CBC, Crypt::Blowfish, Crypt::DES =head1 ACKNOWLEDGEMENTS =over 4 =item Dave Paris For taking the time to discuss and review the initial version of this module, making several useful suggestions, and contributing tests. =item Mike Blazer and Gil Cohen For testing under Windows. =item Tony Cook For making the module work under Activeperl, testing on several platforms, and suggesting that I probe for features via %Config. =back =head1 AUTHOR Abhijit Menon-Sen Copyright 2001 Abhijit Menon-Sen. All rights reserved. This software is distributed under the terms of the Artistic License .