# Crypt::Blowfish - phpMan

## NAME
    [Crypt::Blowfish] - Perl Blowfish encryption module

## SYNOPSIS
      use [Crypt::Blowfish];
      my $cipher = new [Crypt::Blowfish] $key;
      my $ciphertext = $cipher->encrypt($plaintext);
      my $plaintext  = $cipher->decrypt($ciphertext);

      You probably want to use this in conjunction with
      a block chaining module like [Crypt::CBC].

## DESCRIPTION
    Blowfish is capable of strong encryption and can use key sizes up to 56
    bytes (a 448 bit key). You're encouraged to take advantage of the full
    key size to ensure the strongest encryption possible from this module.

    [Crypt::Blowfish] has the following methods:

         blocksize()
         keysize()
         encrypt()
         decrypt()

## FUNCTIONS
    blocksize
        Returns the size (in bytes) of the block cipher.

        [Crypt::Blowfish] doesn't return a key size due to its ability to use
        variable-length keys. More accurately, it shouldn't, but it does
        anyway to play nicely with others.

    new
                my $cipher = new [Crypt::Blowfish] $key;

        This creates a new [Crypt::Blowfish] BlockCipher object, using $key,
        where $key is a key of "keysize()" bytes (minimum of eight bytes).

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

        This function encrypts $plaintext and returns the $ciphertext where
        $plaintext and $ciphertext must be of "blocksize()" bytes. (hint:
        Blowfish is an 8 byte block cipher)

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

        This function decrypts $ciphertext and returns the $plaintext where
        $plaintext and $ciphertext must be of "blocksize()" bytes. (hint:
        see previous hint)

## EXAMPLE
            my $key = pack("H16", "0123456789ABCDEF");  # min. 8 bytes
            my $cipher = new [Crypt::Blowfish] $key;
            my $ciphertext = $cipher->encrypt("plaintex");  # SEE NOTES
            print unpack("H16", $ciphertext), "\n";

## PLATFORMS
            Please see the README document for platforms and performance
            tests.

## NOTES
    The module is capable of being used with [Crypt::CBC]. You're encouraged
    to read the perldoc for [Crypt::CBC] if you intend to use this module for
    Cipher Block Chaining modes. In fact, if you have any intentions of
    encrypting more than eight bytes of data with this, or any other block
    cipher, you're going to need some type of block chaining help.
    [Crypt::CBC] tends to be very good at this. If you're not going to encrypt
    more than eight bytes, your data must be exactly eight bytes long. If
    need be, do your own padding. "\0" as a null byte is perfectly valid to
    use for this.

## SEE ALSO
    [Crypt::CBC], [Crypt::DES], [Crypt::IDEA]

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

## COPYRIGHT
    The implementation of the Blowfish algorithm was developed by, and is
    copyright of, A.M. Kuchling.

    Other parts of the perl extension and module are copyright of Systemics
    Ltd ( <http://www.systemics.com/> ).

    Code revisions, updates, and standalone release are copyright 1999-2010
    W3Works, LLC.

## AUTHOR
    Original algorithm, Bruce Shneier. Original implementation, A.M.
    Kuchling. Original Perl implementation, Systemics Ltd. Current
    maintenance by W3Works, LLC.

    Current revision and maintainer: Dave Paris <<amused@pobox.com>>

