Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

crypt(1)

login(1)

passwd(1)

getpass(3C)

passwd(4)

crypt(3X)                                                         crypt(3X)

NAME
     crypt, setkey, encrypt, descrypt, dessetkey, desencrypt,
     runsetkey, runcrypt, cryptclose - Verschlüsselungsfunktionen für
     Paßwörter und Dateien

SYNTAX
     cc [option ...] datei ... -lcrypt

     #include <crypt.h>

     char *crypt(const char *key, const char *salt);

     void setkey(const char *key);

     void encrypt(char *block, int flag);

     char *descrypt(const char *key, const char *salt);

     void dessetkey(const char *key);

     void desencrypt(char *block, int flag);

     int runsetkey(int *p, const char *key);

     int runcrypt(long offset, char *buffer, unsigned int count,
                   int *p);

     int cryptclose(int *p);

BESCHREIBUNG
     descrypt() ist die Paßwort-Verschlüsselungsfunktion. Sie beruht auf
     einem Einweg-Hash-Algorithmus mit Variationen, die (unter anderem) die
     Verwendung von Hardware-Implementierungen für Schlüsselsuchverfahren
     verhindern sollen.

     key ist das eingegebene Paßwort eines Benutzers. salt ist eine Zei-
     chenkette der Länge zwei aus [a-zA-Z0-9./]. Diese Zeichenkette wird
     zur Veränderung des Verschlüsselungsalgorithmus auf eine von 4096
     Arten verwendet; danach wird das Paßwort als Schlüssel zum wieder-
     holten Verschlüsseln einer konstanten Zeichenkette benutzt. Der
     jeweils zurückgegebene Wert zeigt auf das verschlüsselte Paßwort. Die
     ersten beiden Zeichen sind gleich salt.

     Die Funktionen dessetkey() und desencrypt() ermöglichen den Zugriff
     auf den aktuellen Verschlüsselungsalgorithmus. Das Argument von
     dessetkey() ist ein Zeichenfeld mit einer Länge von 64, das nur die
     Zeichen mit den numerischen Werten 0 und 1 enthält. Bei einer Auftei-
     lung dieser Zeichenkette in Gruppen von je 8 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 Funk-
     tion desencrypt verwendet wird.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

crypt(3X)                                                         crypt(3X)

     Das Argument für desencrypt() ist ein Zeichenfeld der Länge 64, das
     nur die Zeichen mit den numerischen Werten 0 und 1 enthält. Das Argu-
     mentfeld wird anstelle eines ähnlichen Feldes geändert und repräsen-
     tiert dabei die Bits des Arguments, nachdem es unter Verwendung des
     von dessetkey() gesetzten Schlüssels der Hash-Funktion des Arguments
     unterworfen worden ist. Wenn flag gleich Null ist, wird das Argument
     verschlüsselt, sonst wird es entschlüsselt.

     Beachten Sie, daß die Entschlüsselung in der internationalen Version
     von crypt(3X) nicht zur Verfügung steht. Die internationale Version
     ist Teil des C-Entwicklungssystems, und die Inlandversion ist Teil des
     Sicherheitspakets. Wenn versucht wird, die Entschlüsselung mit der
     internationalen Version von desencrypt() aufzurufen, wird eine Feh-
     lermeldung ausgegeben.

     crypt(), setkey() und encrypt() sind Benutzerprogramme, die je nachdem
     descrypt(), dessetkey() und desencrypt() aufrufen.

     Die Routinen runsetkey() und runcrypt() sind für Applikationen [wie
     ed(1) und vi(1)] gedacht, die Verschlüsselungsfähigkeiten benötigen,
     die mit crypt(1) auf Benutzerebene kompatibel sein sollen.
     runsetkey() erstellt eine bidirektionale Pipe-Verbindung zu crypt(),
     wobei key als Paßwort-Argument verwendet wird. runsetkey() nimmt
     einen Block Zeichen und transformiert mit crypt(1) den Klartext oder
     Chiffriertext in Chiffriertext bzw. Klartext. offset ist die relative
     Byte-Position, gerechnet vom Beginn der Datei an, von der der durch
     buffer zur Verfügung gestellte Textblock stammt. count ist die Anzahl
     der Zeichen in buffer, und p ist ein Feld, das Verweise auf eine
     Tabelle von Ein- und Ausgabedatei-Streams enthält. Wenn die Verschlüs-
     selung beendet ist, wird cryptclose() verwendet, um die Verbindung
     mit crypt(1) zu beenden.

     runsetkey() gibt als Ergebnis den Wert -1 zurück, wenn eine Verbin-
     dung mit crypt(1) nicht aufgebaut werden kann. Das passiert bei inter-
     nationalen Versionen des Reliant UNIX Systems, auf denen crypt(1)
     nicht verfügbar ist. Wenn an runsetkey() ein leerer Schlüssel überge-
     ben wird, wird 0 zurückgegeben und sonst 1. runcrypt() gibt -1
     zurück, wenn es von der Pipe, die an crypt() angehängt ist, nicht
     lesen oder nicht auf sie schreiben kann. Sonst wird 0 zurückgegeben.

ERGEBNIS
     In der internationalen Version von crypt(3X) wird ein Wert von 1 für
     flag beim Aufruf von desencrypt() nicht akzeptiert. errno wird in
     diesem Falle auf den Wert ENOSYS gesetzt, um anzuzeigen, daß die Funk-
     tionalität nicht verfügbar ist.

HINWEISE
     Der Rückgabewert in crypt() zeigt auf Daten der Speicherklasse static,
     die bei jedem Aufruf überschrieben werden.

SIEHE AUCH
     crypt(1), login(1), passwd(1), getpass(3C), passwd(4).


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026