crypt

CRYPT(3)                   Linux-Programmierhandbuch                  CRYPT(3)



BEZEICHNUNG
       crypt, crypt_r - Passwort- und Datenverschlüsselung

ÃBERSICHT
       #define _XOPEN_SOURCE       /* Siehe feature_test_macros(7) */
       #include <unistd.h>

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

       #define _GNU_SOURCE         /* Siehe feature_test_macros(7) */
       #include <crypt.h>

       char *crypt_r(const char *key, const char *salt,
                     struct crypt_data *data);

       Linken Sie mit der Option -lcrypt.

BESCHREIBUNG
       crypt() ist die Funktion für die Verschlüsselung von Passwörtern.
       Sie beruht auf dem »Data Encryption«-Standardalgorithmus. Dieser
       wurde abgewandelt, um (unter anderem) vom Einsatz von
       Hardware-Implementierungen von Schlüsselsuchen abzuschrecken.

       key ist das vom Benutzer eingegebene Passwort.

       salt ist eine aus zwei Zeichen bestehende Zeichenkette aus dem
       Zeichenvorrat [a-zA-Z0-9./]. Diese Zeichenkette wird dafür verwendet,
       den Algorithmus auf eine von 4096 unterschiedliche Arten zu
       beeinflussen.

       Aus den untersten sieben Bit jedes der ersten acht Zeichen von key wird
       ein 56-Bit-Schlüssel erzeugt. Dieser 56-Bit-Schlüssel wird verwendet,
       um wiederholt eine konstante Zeichenkette zu verschlüsseln
       (üblicherweise eine Zeichenkette aus lauter Nullen). Der
       zurückgegebene Wert zeigt auf das verschlüsselte Passwort, eine Reihe
       von 13 druckbaren ASCII-Zeichen. (Die ersten beiden Zeichen
       repräsentieren den Salt selbst.) Der Rückgabewert zeigt auf statische
       Daten, deren Inhalt bei jedem Aufruf überschrieben wird.

       Warnung: Der Schlüsselraum besteht aus 2**56 gleich 7.2*10^16
       möglichen Werten. Eine vollständige Durchsuchung dieses
       Schlüsselraums ist mit massiv parallelen Computern möglich. Es ist
       Software wie beispielsweise crack(1) verfügbar und durchsucht den
       Teil, der gewöhnlich von Menschen für Passwörter benutzt wird. Daher
       sollten Passwörter wenigstens übliche Namen und Wörter vermeiden.
       Die Verwendung eines passwd(1)-Programms, das automatisch  während der
       Eingabe auf leicht zu knackende Passwörter prüft, wird empfohlen.

       Der DES-Algorithmus selbst hat ein paar Eigenarten, mit denen die
       Verwendung von crypt(3) für etwas Anderes als Passwortverschlüsselung
       eine sehr schlechte Wahl wird. Wenn Sie vorhaben, die
       crypt()-Schnittstelle  für ein kryptografisches Projekt zu verwenden,
       tun Sie es nicht: Holen Sie sich ein gutes Buch über Verschlüsselung
       und eine der weitläufig verfügbaren DES-Bibliotheken.

       crypt_r() ist eine ablaufinvariante Version von crypt(). Die Struktur,
       auf die data zeigt, wird für die Speicherung von Ergebnisdaten und
       Buchhaltungsinformationen  verwendet. Der Aufrufende sollte die
       Struktur lediglich bereitstellen und data->initialized auf Null setzen,
       bevor crypt_r() erstmalig aufgerufen wird.

RÃCKGABEWERT
       Bei Erfolg wird ein Zeiger auf das verschlüsselte Passwort
       zurückgegeben. Tritt ein Fehler auf, ist der Rückgabewert NULL.

FEHLER
       EINVAL salt hat das falsche Format.

       ENOSYS Die Funktion crypt() wurde nicht implementiert, wahrscheinlich
              wegen Export-Beschränkungen der USA.

       EPERM  /proc/sys/crypto/fips_enabled hat einen von Null verschiedenen
              Wert und es wurde versucht, einen schwachen Verschlüsselungstyp
              wie DES zu verwenden.

ATTRIBUTE
       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt
       verwandten Ausdrücke.

       ┌──────────────┬────────────────────────┬──────────────────────┐
       │Schnittstelle Attribut               Wert                 │
       ├──────────────┼────────────────────────┼──────────────────────┤
       │crypt()       │ Multithread-Fähigkeit │ MT-Unsafe race:crypt │
       ├──────────────┼────────────────────────┼──────────────────────┤
       │crypt_r()     │ Multithread-Fähigkeit │ MT-Safe              │
       └──────────────┴────────────────────────┴──────────────────────┘
KONFORM ZU
       crypt(): POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. crypt_r() ist eine
       GNU-Erweiterung.

ANMERKUNGEN
   Verfügbarkeit in Glibc
       Die Funktionen crypt(), encrypt(3) und setkey(3) sind Teil der
       POSIX.1-2008 XSI Options Group for Encryption und sind optional. Falls
       die Schnittstelle nicht verfügbar ist, dann ist die symbolische
       Konstante _XOPEN_CRYPT entweder nicht definiert oder auf -1 definiert
       und die Verfügbarkeit kann zur Laufzeit mit sysconf(3) überprüft
       werden. Dies kann der Fall sein, falls die nachgelagerte Distribution
       vom Glibc Crypt auf libxcrypt umgestiegen ist. Bei der Neuübersetzung
       von Anwendungen in solchen Distributionen muss der Programmierer
       erkennen, falls _XOPEN_CRYPT nicht verfügbar ist und <crypt.h> für
       die Funktionsprototypen einschlieÃen; ansonsten ist libxcrypt ein
       ABI-kompatibler Austauschersatz.

   Funktionalitäten in Glibc
       Die Glibc-Version dieser Funktion unterstützt weitere
       Verschlüsselungsalgorithmen.

       Wenn salt eine Zeichenkette ist, die mit den Zeichen »$id$« beginnt,
       denen eine optional mit »$« abgeschlossene Zeichenkette folgt, hat
       das Ergebnis die Form:

              $id$salt$encrypted

       id identifiziert die anstelle von DES verwandte
       Verschlüsselungsmethode und legt fest, wie der Rest der
       Passwortzeichenkette interpretiert wird. Die folgenden Werte von id
       werden unterstützt:

              ID  | Methode
              ───────────────────────────────────────────────────────────────
              1   | MD5
              2a  | Blowfish (nicht im Hauptentwicklungszweig der Glibc;
                  | in einigen Linux-Distributionen hinzugefügt)
              5   | SHA-256 (seit Glibc 2.7)
              6   | SHA-512 (seit Glibc 2.7)

       Daher enthalten $5$salt$encrypted und $6$salt$encrypted das mit auf
       SHA-256 respektive SHA-512 basierenden Funktionen verschlüsselte
       Passwort.

       »salt« steht für die bis zu 16 Zeichen, die »$id$« im Salt folgen.
       Der »encrypted«-Teil der Passwortzeichenkette entspricht dem
       tatsächlich berechneten Passwort. Die Länge dieser Zeichenkette ist
       festgelegt:

       MD5     | 22 Zeichen
       SHA-256 | 43 Zeichen
       SHA-512 | 86 Zeichen

       Die Zeichen in »salt« und »encrypted« werden aus dem Vorrat
       [a-zA-Z0-9./] gewählt. In den MD5- und SHA-Implementierungen ist der
       gesamte key signifikant (anstelle nur der ersten acht Byte bei DES).

       Seit Glibc 2.7 unterstützen die SHA-256- und SHA-512-Implementierungen
       eine benutzerdefinierte Anzahl an Hash-Runden, standardmäÃig 5000.
       Falls die Zeichen »$id« in dem Salt von »rounds=xxx$« gefolgt
       werden, wobei xxx eine Ganzzahl ist, hat das Ergbnis die Form:

              $id$rounds=yyy$salt$encrypted

       Hierbei ist yyy die Anzahl der tatsächlich eingesetzten Hash-Runden.
       Die Anzahl der verwandten Runden ist tatsächlich 1000, falls xxx
       kleiner als 1000 ist, 999999999, falls xxx gröÃer als 999999999 ist;
       andernfalls ist sie mit xxx identisch.

SIEHE AUCH
       login(1), passwd(1), encrypt(3), getpass(3), passwd(5)

KOLOPHON
       Diese Seite ist Teil der Veröffentlichung 5.02 des Projekts
       Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie
       Fehler gemeldet werden können sowie die aktuelle Version dieser Seite
       finden sich unter https://www.kernel.org/doc/man-pages/.


ÃBERSETZUNG
       Die deutsche Ãbersetzung dieser Handbuchseite wurde von Martin Eberhard
       Schauer <Martin.E.Schauer@gmx.de> und Helge Kreutzmann
       <debian@helgefjell.de> erstellt.

       Diese Ãbersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Ãbersetzung dieser Handbuchseite finden,
       schicken Sie bitte eine E-Mail an <debian-l10n-
       german@lists.debian.org>.



                                30. April 2018                        CRYPT(3)