crypt(3C) crypt(3C)
NAME
crypt, setkey, encrypt - Zeichenketten verschlüsseln
SYNTAX
#include <unistd.h>
char *crypt(const char *key, const char *salt);
void encrypt(char block[64], int edflag);
#include <stdlib.h>
void setkey(const char *key);
BESCHREIBUNG
crypt() ist die Paßwort-Verschlüsselungsfunktion. Sie beruht auf einem
Einweg-Verschlüsselungsalgorithmus mit Variationen, die (unter ande-
rem) die Anwendung von Hardware-Implementierungen für eine Schlüssel-
suche verhindern sollen.
key ist die zu verschlüsselnde Eingabefolge, zum Beispiel das Paßwort
eines Benutzers. salt ist eine Zeichenkette der Länge zwei aus der
Menge a-zA-Z0-9./. Diese Zeichenkette wird zur Veränderung des Ver-
schlüsselungsalgorithmus auf eine von 4096 verschiedenen Arten verwen-
det; danach wird die Eingabefolge als Schlüssel zum wiederholten Ver-
schlüsseln einer konstanten Zeichenkette benutzt. Der jeweils zurück-
gegebene Wert zeigt auf die verschlüsselte Zeichenkette. Die ersten
beiden Zeichen des Rückgabewerts sind salt selbst.
Die Funktionen setkey() und encrypt() ermöglichen einen (recht einfa-
chen) Zugriff auf den implementierungsabhängigen Verschlüsselungsalgo-
rithmus. Das Argument von setkey() ist ein Zeichenfeld mit einer Länge
von 64 Bytes, das nur die Zeichen mit den numerischen Werten 0 und 1
enthält. Diese Zeichenkette wird in Gruppen von je acht Bits aufge-
teilt, dabei wird das niederwertige Bit in jeder Gruppe ignoriert;
hieraus ergibt sich ein Schlüssel mit 56 Bits, der eingetragen wird.
Dies ist dann der Schlüssel, der von dem Algorithmus zum Verschlüsseln
der Zeichenkette block bei der Funktion encrypt() verwendet wird.
Das Argument block für encrypt() ist ein Zeichenfeld der Länge 64, das
nur Zeichen mit den Werten 0 und 1 enthält. Das Argumentfeld wird in
ein ähnliches Feld geändert, das die Bits des Arguments enthält, nach-
dem sie unter Verwendung des von setkey() gesetzten Schlüssels durch
den Verschlüsselungsalgorithmus verändert wurden. Wenn edflag Null
ist, wird das Argument verschlüsselt. Wenn edflag 1 ist, kann das
Argument entschlüsselt werden. Falls es nicht entschlüsselt wird, wird
errno auf ENOSYS gesetzt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
crypt(3C) crypt(3C)
Die Funktionen schlagen fehl, wenn
ENOSYS Das System unterstützt die Funktionalität nicht.
ERGEBNIS
Der Rückgabewert von crypt() weist auf Daten der Speicherklasse sta-
tic, die bei jedem Aufruf überschrieben werden.
HINWEISE
Da setkey() und encrypt() keinen Wert zurückgeben, können Fehler nur
wie folgt festgestellt werden: errno wird auf 0 gesetzt, dann wird die
Funktion aufgerufen und errno geprüft: Wenn errno ungleich 0 ist, muß
ein Fehler aufgetreten sein.
SIEHE AUCH
login(1), passwd(1), getpass(3C), crypt(3X), passwd(4).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98