plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

encrypt.3 (2061B)


      1 .TH ENCRYPT 3
      2 .SH NAME
      3 encrypt, decrypt, netcrypt \- DES encryption
      4 .SH SYNOPSIS
      5 .B #include <u.h>
      6 .br
      7 .B #include <libc.h>
      8 .PP
      9 .B
     10 int	encrypt(void *key, void *data, int len)
     11 .PP
     12 .B
     13 int	decrypt(void *key, void *data, int len)
     14 .PP
     15 .B
     16 int	netcrypt(void *key, void *data)
     17 .SH DESCRIPTION
     18 .I Encrypt
     19 and
     20 .I decrypt
     21 perform DES encryption and decryption.
     22 .I Key
     23 is an array of
     24 .B DESKEYLEN
     25 (defined as 7 in
     26 .BR <auth.h> )
     27 bytes containing the encryption key.
     28 .I Data
     29 is an array of
     30 .I len
     31 bytes;
     32 it must be at least 8 bytes long.
     33 The bytes are encrypted or decrypted in place.
     34 .PP
     35 The DES algorithm encrypts an individual 8-byte block of data.
     36 .I Encrypt
     37 uses the following method to encrypt data longer than 8 bytes.
     38 The first 8 bytes are encrypted as usual.
     39 The last byte of the encrypted result
     40 is prefixed to the next 7 unencrypted bytes to make the next 8
     41 bytes to encrypt.
     42 This is repeated until fewer than 7 bytes remain unencrypted.
     43 Any remaining unencrypted bytes are encrypted with enough of the preceding
     44 encrypted bytes to make a full 8-byte block.
     45 .I Decrypt
     46 uses the inverse algorithm.
     47 .PP
     48 .I Netcrypt
     49 performs the same encryption as a SecureNet Key.
     50 .I Data
     51 points to an
     52 .SM ASCII
     53 string of decimal digits with numeric value between 0 and 10000.
     54 These digits are copied into an 8-byte buffer with trailing binary zero fill
     55 and encrypted as one DES block.
     56 The first four bytes are each formatted as two digit
     57 .SM ASCII
     58 hexadecimal numbers,
     59 and the string is copied into
     60 .IR data .
     61 .SH SOURCE
     62 .B \*9/src/lib9
     63 .SH DIAGNOSTICS
     64 These routines return 1 if the data was encrypted,
     65 and 0 if the encryption fails.
     66 .I Encrypt
     67 and
     68 .I decrypt
     69 fail if the data passed is less than 8 bytes long.
     70 .I Netcrypt
     71 can fail if it is passed invalid data.
     72 .\" .SH SEE ALSO
     73 .\" .IR securenet (8)
     74 .SH BUGS
     75 The implementation is broken in a way that makes
     76 it unsuitable for anything but authentication.
     77 .PP
     78 To avoid name conflicts with the underlying system,
     79 .IR encrypt 
     80 and
     81 .IR decrypt
     82 are preprocessor macros defined as
     83 .IR p9encrypt
     84 and
     85 .IR p9decrypt ;
     86 see
     87 .MR intro (3) .