NAME

Crypt::DES - Perl DES encryption module

SYNOPSIS

use Crypt::DES;
my $key = pack("H16", "0123456789ABCDEF");
my $cipher = Crypt::DES->new($key);
my $ciphertext = $cipher->encrypt($plaintext);
my $plaintext = $cipher->decrypt($ciphertext);

DESCRIPTION

The module implements the Crypt::CBC interface, which has the following methods

blocksize
keysize
encrypt
decrypt

FUNCTIONS

blocksize

Returns the size (in bytes) of the block cipher.

keysize

Returns the size (in bytes) of the key. Optimal size is 8 bytes.

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

This creates a new Crypt::DES BlockCipher object, using $key, where $key is a key of keysize() bytes.

encrypt
my $cipher = Crypt::DES->new($key);
my $ciphertext = $cipher->encrypt($plaintext);

This function encrypts $plaintext and returns the $ciphertext where $plaintext and $ciphertext should be of blocksize() bytes.

decrypt
my $cipher = Crypt::DES->new($key);
my $plaintext = $cipher->decrypt($ciphertext);

This function decrypts $ciphertext and returns the $plaintext where $plaintext and $ciphertext should be of blocksize() bytes.

Security Considerations

This module is not deprecated as there may still be a reason to encrypt and decrypt using DES. However, DES is known to be weak. In 2026 a standard laptop can brute-force a DES key in a few days. DO NOT use DES (or this module) with any expectation of security.

EXAMPLE

my $key = pack("H16", "0123456789ABCDEF");
my $cipher = Crypt::DES->new($key);
my $ciphertext = $cipher->encrypt("plaintex");	# NB - 8 bytes
print unpack("H16", $ciphertext), "\n";
my $plaintext = $cipher->decrypt($ciphertext);
print $plaintext, "\n";

NOTES

Do note that DES only uses 8 byte keys and only works on 8 byte data blocks. If you're intending to encrypt larger blocks or entire files, please use Crypt::CBC in conjunction with this module. See the Crypt::CBC documentation for proper syntax and use.

Also note that the DES algorithm is, by today's standard, weak encryption. CryptX (Crypt::Cipher::AES) is recommended if you want to replace Crypt::DES in a Crypt::CBC use case. Otherwise, replacing it with something like Crypt::AuthEnc::GCM would be recommended.

SEE ALSO

Crypt::AuthEnc::GCM Crypt::Blowfish Crypt::IDEA

Bruce Schneier, Applied Cryptography, 1995, Second Edition, published by John Wiley & Sons, Inc.

COPYRIGHT

The implementation of the DES algorithm was developed by, and is copyright of, Eric Young (eay@mincom.oz.au). Other parts of the perl extension and module are copyright of Systemics Ltd ( http://www.systemics.com/ ). Cross-platform work and packaging for single algorithm distribution is copyright of W3Works, LLC.

MAINTAINER

This single-algorithm package and cross-platform code is maintained by Dave Paris <amused@pobox.com>.

Timothy Legge <timlegge@gmail.com> started maintaining this module as of version 2.08.