Does OpenBSD use bcrypt by default?

Why doesn't every modern Linux Distribution use BCRYPT?




3 Answers 3


A couple of reasons:

  1. The BCrypt-based scheme isn't NIST approved.

  2. Hash functions are designed for this kind of usage, whereas Blowfish wasn't.

  3. The added security is BCrypt is based on it being computationally expensive, rather than the type of algorithm. Relying on computationally expensive operations isn't good for long-term security.

See http://en.wikipedia.org/wiki/Crypt_%28Unix%29 for some discussion on this.

  • 9
    Being computationally expensive is exactly why bcrypt is used for this application.
    – pdo
    Apr 10, 2011 at 12:11
  • 2
    @rob 4. bcrypt adds a dependency that isn't otherwise there, where sha1 and sha2 are part of glibc Apr 10, 2011 at 12:39
  • What I said in point 3.
    – Rob
    Apr 10, 2011 at 12:40
  • 2
    Sorry, I'll be more clear. Being computationally expensive, plus having a configurable number of rounds, is exactly why this is a good scheme for long-term security. It allows the cost of checking the hash to increase as hardware gets faster. The original paper describing bcrypt was actually titled "A Future-Adaptable Password Scheme" (usenix.org/events/usenix99/provos/provos_html)
    – pdo
    Apr 10, 2011 at 13:56
  • 2
    @Rob All things being equal, a hashing scheme that is more computationally expensive is better than one that is less expensive. It means you have to spend longer to hash each candidate password when brute-forcing the keyspace. If you know of a better attack against Blowfish (as used in bcrypt) than the rest of the world, please let somebody know :)
    – pdo
    Apr 10, 2011 at 16:14

OpenSUSE 11.4 (at least) does use Bcrypt by default.


Ulrich Drepper, the glibc maintainer, rejected bcrypt support since isn't approved by NIST. See details the article bcrypt support for passwords in /etc/shadow

And his article on homepage Unix crypt with SHA-256/512

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .