The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Crypt::Bcrypt - A modern bcrypt implementation

VERSION

version 0.001

SYNOPSIS

 use Crypt::Bcrypt qw/bcrypt bcrypt_check/;

 my $hash = bcrypt($password, '2b', 12, $salt);

 if (bcrypt_check($password, $hash)) {
    ...
 }

DESCRIPTION

This module provides a modern and user-friendly implementation of the bcrypt password hash.

Note that in bcrypt passwords may only contain 72 characters.

FUNCTIONS

bcrypt($password, $subtype, $cost, $salt)

This computes the bcrypt hash for $password in $subtype, with $cost and $salt.

Valid subtypes are:

  • 2b

    This is the subtype the rest of the world has been using since 2014, you should use this unless you have a very specific reason to use something else.

  • 2a

    This is an old and subtly buggy version of bcrypt. This is mainly useful for Crypt::Eksblowfish compatibility.

  • 2y

    This type is considered equivalent to 2b, and is only commonly used on php.

  • 2x

    This is a very broken version that is only useful for compatibility with ancient php versions.

$cost must be between 5 and 31 (inclusive). $salt must be exactly 16 bytes.

bcrypt_check($password, $hash)

This checks if the $password satisfies the $hash, and does so in a timing-safe manner.

SEE OTHER

Crypt::Eksblowfish::Bcrypt also offers bcrypt, but only supports the 2a subtype.

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.