NAME
Crypt::Passphrase::Bcrypt - A bcrypt encoder for Crypt::Passphrase
VERSION
version 0.006
SYNOPSIS
my $passphrase = Crypt::Passphrase->new(
encoder => {
module => 'Bcrypt',
cost => 14,
hash => 'sha256',
},
);
DESCRIPTION
This class implements a bcrypt encoder for Crypt::Passphrase. For high-end parameters Crypt::Passphrase::Argon2 is recommended over this module as an encoder, as that provides memory-hardness and more easily allows for long passwords.
METHODS
new(%args)
cost
This is the cost factor that is used to hash passwords. It currently defaults to
14
, but this may change in the future.subtype
2b
This is the subtype everyone has been using since 2014.
2y
This type is considered equivalent to
2b
. It is common on php but not elsewhere.2a
This is an old and subtly buggy version of bcrypt. This is mainly useful for Crypt::Eksblowfish compatibility.
2x
This is a very broken version that is only useful for compatibility with ancient php versions.
This is
2b
by default, and you're unlikely to want to change this.hash
Pre-hash the password using the specified hash. It will support any hash supported by Crypt::Bcrypt, which is currently
'sha256'
,'sha384'
and'sha512'
. This is mainly useful because plain bcrypt is not null-byte safe and only supports 72 characters of input. This uses a salt-keyed hash to prevent password shucking.
hash_password($password)
This hashes the passwords with bcrypt according to the specified settings and a random salt (and will thus return a different result each time).
needs_rehash($hash)
This returns true if the hash uses a different cipher or subtype, if any of the cost is lower that desired by the encoder or if the prehashing doesn't match.
crypt_types()
This returns the above described subtypes, as well as bcrypt-sha256
for prehashed bcrypt.
verify_password($password, $hash)
This will check if a password matches a bcrypt hash.
AUTHOR
Leon Timmermans <leont@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2021 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.