Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
ENCRYPT(3)		   Library Functions Manual		    ENCRYPT(3)

       encrypt,	decrypt, netcrypt - DES	encryption

       #include	<u.h>
       #include	<libc.h>

       int  encrypt(void *key, void *data, int len)

       int  decrypt(void *key, void *data, int len)

       int  netcrypt(void *key,	void *data)

       Encrypt	and  decrypt perform DES encryption and	decryption.  Key is an
       array of	DESKEYLEN (defined as 7	in <auth.h>) bytes containing the  en-
       cryption	 key.	Data  is  an array of len bytes; it must be at least 8
       bytes long.  The	bytes are encrypted or decrypted in place.

       The DES algorithm encrypts an individual	8-byte block of	data.  Encrypt
       uses  the  following  method  to	encrypt	data longer than 8 bytes.  The
       first 8 bytes are encrypted as usual.  The last byte of	the  encrypted
       result  is  prefixed to the next	7 unencrypted bytes to make the	next 8
       bytes to	encrypt.  This is repeated until fewer than 7 bytes remain un-
       encrypted.   Any	 remaining unencrypted bytes are encrypted with	enough
       of the preceding	encrypted bytes	to make	a full 8-byte block.   Decrypt
       uses the	inverse	algorithm.

       Netcrypt	 performs the same encryption as a SecureNet Key.  Data	points
       to an ASCII string of decimal digits with numeric value between	0  and
       10000.  These digits are	copied into an 8-byte buffer with trailing bi-
       nary zero fill and encrypted as one DES block.  The  first  four	 bytes
       are  each  formatted  as	 two  digit ASCII hexadecimal numbers, and the
       string is copied	into data.


       These routines return 1 if the data was encrypted, and 0	if the encryp-
       tion fails.  Encrypt and	decrypt	fail if	the data passed	is less	than 8
       bytes long.  Netcrypt can fail if it is passed invalid data.

       The implementation is broken in a way that makes	it unsuitable for any-
       thing but authentication.

       To avoid	name conflicts with the	underlying system, encrypt and decrypt
       are preprocessor	macros defined as p9encrypt and	p9decrypt; see



Want to link to this manual page? Use this URL:

home | help