Crypt::Eksblowfish::Blowfish(3pm)
NAME
Crypt::Eksblowfish::Blowfish - Blowfish block cipher via Eksblowfish
engine
SYNOPSIS
use Crypt::Eksblowfish::Blowfish;
$block_size = Crypt::Eksblowfish::Blowfish->blocksize;
$key_size = Crypt::Eksblowfish::Blowfish->keysize;
$cipher = Crypt::Eksblowfish::Blowfish->new($key);
$block_size = $cipher->blocksize;
$ciphertext = $cipher->encrypt($plaintext);
$plaintext = $cipher->decrypt($ciphertext);
$p_array = $cipher->p_array;
$s_boxes = $cipher->s_boxes;
if($cipher->is_weak) { ...
DESCRIPTION
An object of this type encapsulates a keyed instance of the Blowfish
block cipher, ready to encrypt and decrypt.
Blowfish is a symmetric cipher algorithm designed by Bruce Schneier in
1993. It operates on 64-bit blocks, and takes a variable-length key
from 32 bits (4 octets) to 448 bits (56 octets) in increments of 8 bits
(1 octet).
This implementation of Blowfish uses an encryption engine that was
originally implemented in order to support Eksblowfish, which is a
variant of Blowfish modified to make keying particularly expensive.
See Crypt::Eksblowfish for that variant; this class implements the
original Blowfish.
CLASS METHODS
- Crypt::Eksblowfish::Blowfish->blocksize
- Returns 8, indicating the Blowfish block size of 8 octets. This
method may be called on either the class or an instance. - Crypt::Eksblowfish::Blowfish->keysize
Returns 0, indicating that the key size is variable. This
situation is handled specially by "Crypt::CBC".
CONSTRUCTOR
- Crypt::Eksblowfish::Blowfish->new(KEY)
- Performs key setup on a new instance of the Blowfish algorithm,
returning the keyed state. The KEY may be any length from 4 octets to 56 octets inclusive. - You may occasionally come across an alleged Blowfish key that is
outside this length range, and so is rejected by this constructor. Blowfish can internally process a key of any octet length up to 72 octets, and some implementations don't enforce the official length restrictions. If it is necessary for compatibility, a key of outof-range length can be processed by
Crypt::Eksblowfish::Uklblowfish.
METHODS
- $cipher->blocksize
- Returns 8, indicating the Blowfish block size of 8 octets. This
method may be called on either the class or an instance. - $cipher->encrypt(PLAINTEXT)
PLAINTEXT must be exactly eight octets. The block is encrypted,
and the ciphertext is returned. - $cipher->decrypt(CIPHERTEXT)
CIPHERTEXT must be exactly eight octets. The block is decrypted,
and the plaintext is returned. - $cipher->p_array
$cipher->s_boxes
These methods extract the subkeys from the keyed cipher. This is
not required in ordinary operation. See the superclass
Crypt::Eksblowfish::Subkeyed for details. - $cipher->is_weak
This method checks whether the cipher has been keyed with a weak
key. It may be desired to avoid using weak keys. See the
superclass Crypt::Eksblowfish::Subkeyed for details.
SEE ALSO
Crypt::Eksblowfish, Crypt::Eksblowfish::Subkeyed,
Crypt::Eksblowfish::Uklblowfish,
<http://www.schneier.com/blowfish.html>
AUTHOR
Eksblowfish guts originally by Solar Designer (solar at openwall.com).
Modifications and Perl interface by Andrew Main (Zefram)
<zefram@fysh.org>.
COPYRIGHT
Copyright (C) 2006, 2007, 2008, 2009, 2010 Andrew Main (Zefram)
<zefram@fysh.org>
The original Eksblowfish code (in the form of crypt()) from which this
module is derived is in the public domain. It may be found at
<http://www.openwall.com/crypt/>.
LICENSE
- This module is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.