CRYPT(3)                       Library Routines                       CRYPT(3)




NAME

       crypt, setkey, encrypt, - simple encryption


SYNOPSIS

       #include <unistd.h>

       char *crypt (const char *key, const char *salt);
       int setkey (char *key);
       int encrypt (char *block, int flag);


DESCRIPTION

       The crypt function performs password encryption.  It is derived from an
       algorithm given in Computer Networks by Andy Tanenbaum.

       The first argument to crypt (key) is a NULL-terminated string (normally
       a  password typed by a user).  The second, salt, is a two-character ar‐
       ray that should be randomly generated by the caller in the case of  en‐
       crypting a new password, or should be taken as the first two characters
       of the /etc/passwd password entry in the case of validating a password.

       The functions, encrypt and setkey allow limited access to  the  encryp‐
       tion  algorithm  itself.   The key argument to setkey is a 64 character
       array of binary values (numeric 0 or 1).  A 56-bit key is derived  from
       this array by dividing the array into groups of 8 and ignoring the last
       bit in each group.

       The encrypt argument block is also a 64 character array of binary  val‐
       ues.   If the value of flag is 0, the argument block is encrypted, oth‐
       erwise it is decrypted.  The encryption or decryption  is  returned  in
       the  original  array  block  after using the key specified by setkey to
       process it.

       The function crypt returns a pointer to the encrypted value  (which  is
       formatted  as  printable ASCII characters) on success and NULL on fail‐
       ure.  The functions setkey and encrypt return 0 on  success  and  1  on
       failure.

       Use of these routines requires linking with the libcrypt library.


SEE ALSO

       login(1), passwd(1), getpass(3), passwd(5)

              Mathematical  Cryptology  for Computer Scientists and Mathemati
              cians by Wayne Patterson.  1987.  Volume ISBN 0-8476-7438-X.

              Password Security: A Case History by R.  Morris,  Ken  Thompson.
              Communications of the ACM, vol. 22, pp. 594-597.  November 1979.

              DES  will  be Totally Insecure within Ten Years by M.E. Hellman.
              IEEE Spectrum, vol. 16, pp. 32-39.  July 1979.


BUGS

       The crypt function leaves its result in an internal static  object  and
       returns  a pointer to that object.  Subsequent calls to crypt will mod‐
       ify the same object.



GNO                             28 January 1997                       CRYPT(3)

Man(1) output converted with man2html