CRYPT(3) Library functions CRYPT(3) NNAAMMEE crypt - password and data encryption SSYYNNOOPPSSIISS ##ddeeffiinnee __XXOOPPEENN__SSOOUURRCCEE ##iinncclluuddee <> cchhaarr **ccrryypptt((ccoonnsstt cchhaarr **_k_e_y,, ccoonnsstt cchhaarr **_s_a_l_t));; DDEESSCCRRIIPPTTIIOONN ccrryypptt is the password encryption function. It is based on the Data Encryption Standard algorithm with variations intended (among other things) to discourage use of hard­ ware implementations of a key search. _k_e_y is a user's typed password. _s_a_l_t is a two-character string chosen from the set [aa-zzAA-ZZ00-99..//]. This string is used to perturb the algo­ rithm in one of 4096 different ways. By taking the lowest 7 bit of each character of the _k_e_y, a 56-bit key is obtained. This 56-bit key is used to encrypt repeatedly a constant string (usually a string consisting of all zeros). The returned value points to the encrypted password, a series of 13 printable ASCII characters (the first two characters represent the salt itself). The return value points to static data whose content is overwritten by each call. Warning: The key space consists of 2**56 equal 7.2e16 pos­ sible values. Exhaustive searches of this key space are possible using massively parallel computers. Software, such as ccrraacckk(1), is available which will search the por­ tion of this key space that is generally used by humans for passwords. Hence, password selection should, at mini­ mum, avoid common words and names. The use of a ppaasssswwdd(1) program that checks for crackable passwords during the selection process is recommended. The DES algorithm itself has a few quirks which make the use of the ccrryypptt(3) interface a very poor choice for any­ thing other than password authentication. If you are planning on using the ccrryypptt(3) interface for a cryptogra­ phy project, don't do it: get a good book on encryption and one of the widely available DES libraries. CCOONNFFOORRMMIINNGG TTOO SVID, X/OPEN, BSD 4.3 SSEEEE AALLSSOO llooggiinn(1), ppaasssswwdd(1), eennccrryypptt(3), ggeettppaassss(3), ppaasssswwdd(5) September 3, 1994 1