NAME

Crypt::Passphrase::Bcrypt::AES - A peppered AES-encrypted Bcrypt encoder for Crypt::Passphrase

SYNOPSIS

my $passphrase = Crypt::Passphrase->new(
    encoder => {
        module  => 'Bcrypt::AES',
        peppers => {
            1 => pack('H*', '0123456789ABCDEF...'),
            2 => pack('H*', 'FEDCBA9876543210...'),
        },
    },
);

DESCRIPTION

This class implements peppering by encrypting the hash using AES (unlike Crypt::Passphrase::Pepper::Simple which hashes the input instead).

Configuration

This module takes all arguments also taken by Crypt::Passphrase::Bcrypt, with the following additions:

  • peppers

    This is a map of identifier to pepper value. The identifiers should be (probably small) numbers, the values should be random binary strings that must be either 16, 24 or 32 bytes long. This argument is mandatory.

  • active

    This is the identifier of the active pepper. By default it will be the identifier with the highest (numerical) value.

  • mode

    This is the mode that will be used with AES. Valid values are 'ctr' (the default), 'cfb', 'ofb', 'cbc-pad' or 'ecb-pad'.

The hash parameter will default to 'sha384'.

Supported crypt types

This supports any sequence of bcrypt-, (sha256 | sha384 | sha512), -encrypted-aes-, (ctr | cfb | ofb | cbc-pad | ecb-pad). E.g. bcrypt-sha384-encrypted-aes-ctr

AUTHOR

Leon Timmermans <fawaka@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2024 by Leon Timmermans.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.