1. Index
  2. Shell
  3. C
  4. POSIX
  5. JavaScript

Kryptographie

Die Standardbibliothek bietete Funktionen zur Erzeugung von Pseudo-Zufallszahlen und Streuwertfunktionen für Passwörter. Für starke kryptographie sollte man eine echte kryptographische Bibliothek wie zum Beispiel OpenSSL verwenden.

stdlib.h

Pseudo-Zufallszahlen erzeugen.

int rand (void) Ganzzahl
int rand_r (unsigned int * seedp) Obsolet
void srand (unsigned int seed) Initialisierung
void srandom (unsigned int seed)
long random (void) Ganzzahl
char * initstate (unsigned int seed, char * state, size_t n)
char * setstate ( char * state)
void srand48 (long int seedval)
unsigned short * seed48 (unsigned short seed16v[3])
void lcong48 (unsigned short param[7])
double drand48 (void) Gleitpunktzahl
double erand48 (unsigned short xsubi[3]) Gleitpunktzahl
long lrand48 (void) Nächste Positive
long nrand48 (unsigned short xsubi[3]) Positive Zahl
long mrand48 (void) Vorzeichenbehaftet
long jrand48 (unsigned short xsubi[3]) Vorzeichenbehaftet
void setkey (const char * key) Schlüssel für encrypt

crypt.h

Ablaufinvariante Alternativen

struct crypt_data
char keysched[16 * 8]
char sb0[32768]
char sb1[32768]
char sb2[32768]
char sb3[32768]
char crypt_3_buf[14]
char current_salt[2]
long current_saltbits
int direction
int initialized
void setkey_r (const char * key, struct crypt_data * data)
void encrypt_r (char * block, int edflag, struct crypt_data * data)
0 Verschlüsselung
1 Entschlüsselung

unistd.h

Die POSIX-Funktionen implementieren den mittlerweile unsicheren DES-Algorithmus. Da dieser ehemals exportbeschränkten unterlag, wurden die Funktionen in die Bilbiothek libcrypt ausgelagert und muss diese mit -lcrypt einbinden.

$Id$Salt$Encrypted
void encrypt (char block[64], int edflag) Daten mit setkey verschlüsseln
char * crypt (const char * key,
const char * salt
Streuwert über Passwort bilden
char * crypt_r (const char * key,
const char * salt,
struct crypt_data * data)
8 signifikante Zeichen aus dem 7-Bit ASCII-Alphabet
2 Zeichen aus der Menge [a-zA-Z0-9./] für DES in 4096 Variationen
Beliebig viele Zeichen für starke Streufunktionen
id salt encrypted Algorithmus
1 16 22 MD5
2a 16 ? Blowfish
5 16 43 SHA-256
6 16 86 SHA-512