The bcrypt hash module comes from crypt_blowfish, originally written by Solar Designer and based on algorithms and ideas by Niels Provos and David Mazieres . The MD5, SHA256, and SHA512 hash modules, and the underlying secure-hash primitives, were originally written by Ulrich Drepper as part of the GNU C Library. Other people may also have contributed to them; our records are incomplete. The DES hash module was originally FreeSec, written by David Burren for the NetBSD project, and since extensively modified by Geoffrey M. Rehmet, Mark R V Murray, and Zack Weinberg. The extended crypt_* interfaces also originated with crypt_blowfish, but their implementation in this library has been totally rewritten since then, mostly by Björn Esser and Zack Weinberg. The above components were assembled into this library by Thorsten Kukuk , Björn Esser , and Zack Weinberg .