glenda.party
term% ls -F
term% cat index.txt
ENCRYPT(2)                    System Calls Manual                   ENCRYPT(2)



NAME
       encrypt, decrypt, netcrypt - DES encryption

SYNOPSIS
       #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)

DESCRIPTION
       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.

SOURCE
       /sys/src/libc/port

DIAGNOSTICS
       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.

SEE ALSO
       securenet(8)

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



                                                                    ENCRYPT(2)