CRYPT(3C) SysV CRYPT(3C)
NAME
crypt, setkey, encrypt - generate hashing encryption
SYNOPSIS
char *crypt (key, salt)
char *key, *salt;
void setkey (key)
char *key;
void encrypt (block, ignored)
char *block;
int ignored;
DESCRIPTION
crypt is the password encryption function. It is based on a one-way
hashing encryption algorithm with variations intended (among other
things) to frustrate use of hardware implementations of a key search.
key is a user's typed password. salt is a two-character string chosen
from the set [a-zA-Z0-9./]; this string is used to perturb the hashing
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 password. The first two characters are the salt
itself.
The setkey and encrypt entries provide (rather primitive) access to the
actual hashing 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 eight, the low-order bit in each
group is ignored; this gives a 56-bit key which is set into the machine.
This is the key that will be used with the hashing algorithm to encrypt
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 hashing algorithm
by using the key set by setkey. ignored is unused by encrypt but it must
be present.
SEE ALSO
getpass(3C), passwd(4).
login(1), passwd(1) in the SysV Command Reference.
NOTES
The return value points to static data that are overwritten by each call.