Bcrypt is a cryptographic hash algorithm designed for hashing passwords with a controllable difficulty parameter. It was designed by Niels Provos and David Mazières in 1999, and is based on the popular Blowfish cipher. Bcrypt produces a 24-byte hash from a 16-byte salt and an input which can be up to 72-bytes. The resulting hash is formatted along with the parameters used to generate the hash into the PHC format.

The PHC identifier used by bcrypt was originally '$2$', however several revisions have been made over the years such that a total of five identifiers now exist: '$2', '$2a', '$2x', '$2y', and '$2b'. This tool generates hashes that match the bcrypt '$2a' identifier which is the first revision with no errors, but there is an option to select the other identifiers for the PHC string despite the fact that they are not actually supported.

The original paper by Niels Provos and David Mazières, presented at USENIX in 1999 is available at https://www.usenix.org/legacy/events/usenix99/provos/provos.pdf.