crypt(3C) crypt(3C)
NAME
crypt, setkey, encrypt - generate DES encryption
SYNOPSIS
char *crypt (key, salt)
char *key, *salt;
void setkey (key)
char *key;
void encrypt (block, edflag)
char *block;
int edflag;
DESCRIPTION
crypt is the password encryption function. It is based on
the NBS Data Encryption Standard (DES), with variations
intended to frustrate use of hardware implementations of the
DES for key search.
key is a user's typed password. is a 2-character string
chosen from the set [a-zA-Z0-9./]; this string is used to
perturb the DES algorithm in one of 4,096 different ways,
after which the password is used as the key to encrypt
repeatedly a constant string. The returned value points to
the encrypted password. The first 2 characters are the salt
itself.
The setkey and encrypt entries provide (rather primitive)
access to the actual DES algorithm. The argument of setkey
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; this gives a 56-bit key which is set into the
machine. The 56-bit key is used with the above-mentioned
algorithm to encrypt or decrypt the string block with the
function encrypt.
The argument to the encrypt entry is a character array of
length 64 containing only the characters with numerical
value 0 and 1. 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 setkey. If edflag is zero, the argument is encrypted; if
non-zero, it is decrypted.
SEE ALSO
login(1), passwd(1), getpass(3C), passwd(4).
BUGS
The return value points to static data that is overwritten
by each call.
Page 1 (last mod. 1/14/87)