NAME

Crypt::OpenBSD::Blowfish - Perl extension for the OpenBSD Blowfish cipher implementation.

SYNOPSIS

use Crypt::OpenBSD::Blowfish;
my $bf = Crypt::OpenBSD::Blowfish->new($key);
my $encrypted = $bf->encrypt$data);
...
my $decrypted = $bf->decrypt($encrypted);

or to create key material:

use Crypt::OpenBSD::Blowfish;
my $bf = Crypt::OpenBSD::Blowfish->new();
$bf->expandstate($salt,$pass);
foreach (1..64) {
   $bf->expand0state($salt);
   $bf->expand0state($pass);
}
$key_material = $bf->encrypt_iterate($data,64);

DESCRIPTION

This module is a wrapper for the OpenBSD implementation of the Blowfish cipher. The C source is taken from the portable OpenSSH source code.

CLASS METHODS

Crypt::OpenBSD::Blowfish->blocksize

Returns 8, as the Blowfish block size is eight octets.

Crypt::OpenBSD::Blowfish->keysize

Returns 0, as the Blowfish key size is variable.

CONSTRUCTOR

$bf = Crypt::OpenBSD::Blowfish->new()

$bf = Crypt::OpenBSD::Blowfish->new($key)

Returns a Crypt::OpenBSD::Blowfish object. Passing a key will transform the S-boxes and subkeys with the key.

METHODS

$cipher->blocksize

Returns 8. Blowfish uses an eight-octet block size. May be called via either a class method or object method.

$encrypted = $cipher->encrypt($data)

Encrypt $data, which must be in 8-byte chunks.

$decrypted = $cipher->decrypt($data)

Decrypt $data, which must be in 8-byte chunks.

$cipher->expandstate($data,$key)

Expand the subkeys using data (salt) and a key.

$cipher->expand0state($key)

Expand the subkeys using key.

$encrypted = $bf->encrypt_iterate($data,$rounds)

Iteratively encrypt $data for $rounds rounds. Useful for creating key material for a password function.

EXPORT

None by default.

SEE ALSO

Git Hub home: https://github.com/lkinley/Crypt-OpenBSD-Blowfish/

AUTHOR

Lance Kinley, <lkinley@loyaltymethods.com>

COPYRIGHT AND LICENSE

Copyright (C) 2015 by Lance Kinley/Loyalty Methods, Inc.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.18.2 or, at your option, any later version of Perl 5 you may have available.