72 lines
1.8 KiB
Groff
72 lines
1.8 KiB
Groff
|
.TH CRYPT 3
|
||
|
.SH NAME
|
||
|
crypt \- one-way password encryption function
|
||
|
.SH SYNOPSIS
|
||
|
.ft B
|
||
|
.nf
|
||
|
#define _MINIX_SOURCE 1
|
||
|
#include <unistd.h>
|
||
|
|
||
|
char *crypt(const char *\fIkey\fP, const char *\fIsalt\fP)
|
||
|
.fi
|
||
|
.ft P
|
||
|
.SH DESCRIPTION
|
||
|
The first use of
|
||
|
.B crypt()
|
||
|
is to encrypt a password. Its second use is to authenticate a shadow
|
||
|
password. In both cases
|
||
|
.B crypt()
|
||
|
calls
|
||
|
.BR pwdauth (8)
|
||
|
to do the real work.
|
||
|
.PP
|
||
|
.B Crypt()
|
||
|
encrypts a password if called with a user typed key, and a salt
|
||
|
whose first two characters are in the set [./0-9A-Za-z]. The result is a
|
||
|
character string in the [./0-9A-Za-z] alphabet of which the first two
|
||
|
characters are equal to the salt, and the rest is the result of encrypting
|
||
|
the key and the salt.
|
||
|
.PP
|
||
|
If
|
||
|
.B crypt()
|
||
|
is called with a salt that has the form
|
||
|
.BI "##" user
|
||
|
then the key is encrypted and compared to the encrypted password of
|
||
|
.I user
|
||
|
in the shadow password file. If they are equal then
|
||
|
.B crypt()
|
||
|
returns the
|
||
|
.BI "##" user
|
||
|
argument, if not then some other string is returned. This trick assures
|
||
|
that the normal way to authenticate a password still works:
|
||
|
.PP
|
||
|
.RS
|
||
|
.nf
|
||
|
if (strcmp(pw->pw_passwd, crypt(key, pw->pw_passwd))) ...
|
||
|
.fi
|
||
|
.RE
|
||
|
.PP
|
||
|
If
|
||
|
.I key
|
||
|
is a null string, and the shadow password is a null string or the salt is a
|
||
|
null string then the result equals
|
||
|
.IR salt .
|
||
|
(This is because the caller can't tell if a password field is empty in the
|
||
|
shadow password file.)
|
||
|
.PP
|
||
|
The key and salt are limited to 1024 bytes total including the null bytes.
|
||
|
.SH FILES
|
||
|
.TP 25
|
||
|
/usr/lib/pwdauth
|
||
|
The password authentication program
|
||
|
.SH "SEE ALSO"
|
||
|
.BR getpass (3),
|
||
|
.BR getpwent (3),
|
||
|
.BR passwd (5),
|
||
|
.BR pwdauth (8).
|
||
|
.SH NOTES
|
||
|
The result of an encryption is returned in a static array that is
|
||
|
overwritten by each call. The return value should not be modified.
|
||
|
.SH AUTHOR
|
||
|
Kees J. Bot (kjb@cs.vu.nl)
|