Provided by: manpages-de-dev_2.14-1_all bug

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.

       ┌──────────────┬───────────────────────┬──────────────────────┐
       │SchnittstelleAttributWert                 │
       ├──────────────┼───────────────────────┼──────────────────────┤
       │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  4.16  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)