Provided by: manpages-de-dev_1.11-1_all 

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
Anmerkungen zur Glibc
Die Glibc2-Version dieser Funktion unterstützt weitere Verschlüsselungsalgorithmen.
Wenn salt eine Zeichenkette ist, die mit den Zeichen »$id$« beginnt, denen eine mit »$« abgeschlossene
Zeichenkette folgt:
$id$salt$encrypted
dann identifiziert id anstelle des DES-Programms die 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)
Also ist $5$salt$encrypted ein SHA-256-codiertes Passwort und $6$salt$encrypted ist ein
SHA-512-codiertes.
»salt« steht für die bis zu 16 Zeichen, die »$id$« im Salt folgen. Der verschlüsselte 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).
SIEHE AUCH
login(1), passwd(1), encrypt(3), getpass(3), passwd(5)
KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.04 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 http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.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>.
8. August 2015 CRYPT(3)