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 NTHASH module comes from FreeBSD, originally written by Michael Bretterklieber and based on the password hashing algorithm used by the Windows NT LAN Manager (NTLM) from Microsoft Corporation to provide easier compatibility with NT accounts. The SUNMD5 hash module comes from (Open)Solaris, originally written by Alec Muffett, Copyright Sun Microsystems, Inc. and was released under the terms of the Common Development and Distribution License, Version 1.0 only. It has been slightly modified for portability and use inside of libxcrypt by Björn Esser. The implementation of the public interface (crypt, crypt_r, etc) is a mashup of code from the GNU C Library with code from crypt_blowfish, originally put together by Thorsten Kukuk and since completely rewritten by Björn Esser and Zack Weinberg. The above components were assembled into this library by Thorsten Kukuk , Björn Esser , and Zack Weinberg .