CRYPT(3) 1985 CRYPT(3) NNAAMMEE crypt, setkey, encrypt - DES encryption SSYYNNOOPPSSIISS cchhaarr **ccrryypptt((kkeeyy,, ssaalltt)) cchhaarr **kkeeyy,, **ssaalltt;; sseettkkeeyy((kkeeyy)) cchhaarr **kkeeyy;; eennccrryypptt((bblloocckk,, eeddffllaagg)) cchhaarr **bblloocckk;; DDEESSCCRRIIPPTTIIOONN _C_r_y_p_t is the password encryption routine. It is based on the NBS Data Encryption Standard, with variations intended (among other things) to frustrate use of hardware implemen- tations of the DES for key search. The first argument to _c_r_y_p_t is normally a user's typed pass- word. The second is a 2-character string chosen from the set [a-zA-Z0-9./]. The _s_a_l_t string is used to perturb the DES algorithm in one of 4096 different ways, after which the password is used as the key to encrypt repeatedly a constant string. The returned value points to the encrypted pass- word, in the same alphabet as the salt. The first two char- acters are the salt itself. The other entries provide (rather primitive) access to the actual DES algorithm. The argument of _s_e_t_k_e_y is a character array of length 64 containing only the characters with numerical value 0 and 1. If this string is divided into groups of 8, the low-order bit in each group is ignored, leading to a 56-bit key which is set into the machine. The argument to the _e_n_c_r_y_p_t entry is likewise a character array of length 64 containing 0's and 1's. The argument array is modified in place to a similar array representing the bits of the argument after having been subjected to the DES algorithm using the key set by _s_e_t_k_e_y. If _e_d_f_l_a_g is 0, the argument is encrypted; if non-zero, it is decrypted. SSEEEE AALLSSOO passwd(1), passwd(5), login(1), getpass(3) BBUUGGSS The return value points to static data whose content is overwritten by each call. Printed 7/27/90 May 1