The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Crypt::XTEA_PP - Pure Perl Implementation of the eXtended Tiny Encryption Algorithm

VERSION

version 0.0106

SYNOPSIS

   use Crypt::XTEA_PP;
   use Crypt::CBC;

   my $xtea = Crypt::XTEA_PP->new( $key );
   my $cbc = Crypt::CBC->new( -cipher => $xtea );

   my $text = 'The quick brown fox jumps over the lazy dog.';
   my $cipher_text = $cbc->encrypt( $text );

   my $plain_text = $cbc->decrypt( $cipher_text );

DESCRIPTION

In cryptography, XTEA (eXtended TEA) is a block cipher designed to correct weaknesses in TEA. The cipher's designers were David Wheeler and Roger Needham of the Cambridge Computer Laboratory, and the algorithm was presented in an unpublished technical report in 1997 (Needham and Wheeler, 1997). It is not subject to any patents.

Like TEA, XTEA is a 64-bit block Feistel cipher with a 128-bit key and a suggested 64 rounds. But in Crypt::XTEA_PP, the recommended value for $rounds is 32.

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

METHODS

keysize

Returns the maximum XTEA key size, 16 bytes.

blocksize

Returns the XTEA block size, which is 8 bytes. This function exists so that Crypt::XTEA_PP can work with Crypt::CBC.

new

    my $xtea = Crypt::XTEA_PP->new( $key, $rounds );

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

encrypt

    $cipher_text = $xtea->encrypt($plain_text);

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

decrypt

    $plain_text = $xtea->decrypt($cipher_text);

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

SEE ALSO

Crypt::CBC

AUTHOR

Kars Wang <jahiy@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by Kars Wang.

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