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

NAME

 bmkpasswd - bcrypt-enabled mkpasswd

SYNOPSIS

 bmkpasswd [OPTIONS]... [PASSWD]

OPTIONS

 -m, --method=TYPE  [default: bcrypt]
     Types:  bcrypt  (recommended; guaranteed available)
             sha512  (requires recent libc or Crypt::Passwd::XS)
             sha256  (requires recent libc or Crypt::Passwd::XS)
 -w, --workcost=NUM Bcrypt work-cost factor; default 08.
                    Higher is slower. Should be a two-digit power of 2.
 -c, --check=HASH   Compare password against given HASH
 -s, --strong       Use strongly-random salt generation
 -b, --benchmark    Show timers; useful for comparing hash generation
 --available        List available methods (one per line)
 --version          Display version information and available methods

If PASSWD is missing, it is prompted for interactively.

DESCRIPTION

Simple bcrypt-enabled mkpasswd.

While SHA512 isn't a bad choice if you have it, bcrypt has the advantage of including a configurable work cost factor.

A higher work cost factor exponentially increases hashing time, meaning a brute-force attack against stolen hashes can take a very long time.

Salts are randomly generated using Bytes::Random::Secure::Tiny. Using the --strong option requires a reliable source of entropy; if you are entropy-starved, try haveged (http://www.issihosts.com/haveged/downloads.html), especially on headless Linux systems.

See App::bmkpasswd for more details on bcrypt and the inner workings of this software.

See Crypt::Bcrypt::Easy if you'd like a simple interface to creating and comparing bcrypted passwords from your own modules.

CAVEATS

Users of 5.8.x perls or MSWin32 platforms will need Term::ReadKey to turn off terminal echo for password prompts.

AUTHOR

Jon Portnoy <jon@portnoy.me>