DES(3pm)

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.