Jon Portnoy > App-bmkpasswd > Crypt::Bcrypt::Easy



Annotate this POD

View/Report Bugs
Module Version: 2.005004   Source  


Crypt::Bcrypt::Easy - Simple interface to bcrypted passwords


  use Crypt::Bcrypt::Easy;

  # Generate bcrypted passwords:
  my $plain = 'my_password';
  my $passwd = bcrypt->crypt( $plain );

  # Generate passwords with non-default options:
  my $passwd = bcrypt->crypt( text => $plain, cost => 8 );

  # Compare passwords:
  if (bcrypt->compare( text => $plain, crypt => $passwd )) {
    # Successful match

  # Generate passwords using a different default workcost:
  my $bc = bcrypt( cost => 10 );
  my $crypted = $bc->crypt( $plain );


This module provides an easy interface to creating and comparing bcrypt-hashed passwords via App::bmkpasswd's exported helpers (which were created to power bmkpasswd and are a bit awkward to use directly).

This POD briefly covers usage of this interface; see App::bmkpasswd for more details on bcrypt, internals, and documentation regarding the more flexible functional interface.

This module uses Exporter::Tiny; you can rename the "bcrypt" function as-needed:

  use Crypt::Bcrypt::Easy 'bcrypt' => { -as => 'bc' };


  my $bcrypt = bcrypt( cost => '10' );

Creates and returns a new Crypt::Bcrypt::Easy object.

The default workcost is '08'. This can be also be tuned for individual runs; see "crypt".

(This is merely a convenience function for calling Crypt::Bcrypt::Easy->new.)


Create and return a new password hash:

  my $crypted = bcrypt->crypt( 'my_password' );

Override default options (see App::bmkpasswd):

  my $crypted = bcrypt->crypt(
    text   => 'my_password',
    cost   => 10,
    strong => 1,

Specifying a boolean true 'strong =>' parameter enables strongly-random salts (see App::bmkpasswd).


  if (bcrypt->compare(text => 'my_password', crypt => $crypted)) {

Returns boolean true if hashes match. Accepts any type of hash supported by App::bmkpasswd and your system; see "passwdcmp" in App::bmkpasswd.


Returns the current work-cost value; see App::bmkpasswd.


Jon Portnoy <>

syntax highlighting: