In PHP wird die Crypt () -Funktion verwendet, um Strings zu verschlüsseln, insbesondere für das Passworthashing. Die Implementierung und Leistung beruht nicht nur auf PHP selbst, sondern beruhen tief auf die Verschlüsselungsbibliothek am Ende des Systems, insbesondere auf die in der GNU C Library (GLIBC) bereitgestellte Kennwortverschlüsselungsschnittstelle. In diesem Artikel wird seine Interaktion mit der zugrunde liegenden Bibliothek des Systems und deren Abhängigkeiten zwischen den beiden basierend auf dem Arbeitsmechanismus der Crypt () -Funktion untersucht.
Die Signatur der PHP -Funktion von PHP ist wie folgt:
string crypt ( string $str [, string $salt ] )
$ str ist die String, die verschlüsselt wird, normalerweise das Kennwort des Benutzers.
$ salt ist ein Salzwert, der den Verschlüsselungsalgorithmus und seine Parameter angibt.
Crypt () gibt die verschlüsselte Zeichenfolge zurück, das Format hängt vom ausgewählten Algorithmus ab.
Unten ruft PHPs Crypt () die Crypt () -Funktion in der System -C -Bibliothek mit demselben Namen auf, was bedeutet, dass der Verschlüsselungsalgorithmus und die Sicherheit stark von der Systemimplementierung abhängen.
GLIBC ist eine häufig verwendete C -Standardbibliothek in Linux -Systemen und bietet eine große Anzahl von Infrastrukturfunktionen, einschließlich der Crypt () -Funktion. PHP implementiert die Kennwortverschlüsselung, indem er Crypt () in der Systembibliothek aufruft. Dies hat die folgenden Vorteile:
Implementierung vollständig getesteter Verschlüsselungsalgorithmen in Multiplexing -Systemen
Unterstützt eine Vielzahl von Verschlüsselungsalgorithmen wie traditionelle DES, MD5, SHA-256, SHA-512 usw.
Starke Kompatibilität , keine Notwendigkeit, Verschlüsselungsalgorithmen intern in PHP aufrechtzuerhalten
Die Crypt () -Funktion von Glibc wählt den Verschlüsselungsalgorithmus basierend auf dem Format des Salzwerts aus. Zum Beispiel:
Traditionelles DES: 2-Charakter-Salz
MD5: Salz beginnend mit $ 1 $ $
SHA-256: Salz beginnend mit $ 5 $
SHA-512: Salz beginnend mit $ 6 $
Die Funktion ruft die entsprechende Verschlüsselungsimplementierung gemäß dem Algorithmus auf und gibt dann die formatierte Hash -Zeichenfolge zurück.
PHPs Crypt () ruft direkt die C -Bibliotheksfunktion des Systems Crypt () auf, was bedeutet:
Die Art und Implementierung von Verschlüsselungsalgorithmen werden vom System bestimmt und PHP wird nur als Schnittstelle verwendet.
Die Sicherheit von PHP hängt in gewissem Maße von der Aktualisierung und Wartung von Systembibliotheken ab.
Wenn die Systembibliothek keinen Algorithmusunterstützung hat, kann PHP nicht verwendet werden.
Die Implementierung der Crypt () -Funktion kann bei verschiedenen Betriebssystemen oder -verteilungen unterschiedlich sein.
PHP unter Windows basiert normalerweise auf andere Bibliotheken oder integrierte Implementierungen, und sein Verhalten unterscheidet sich von dem unter Linux.
Aufgrund der Abhängigkeit von der Systembibliothek sollten Sicherheitspatches und Algorithmus -Upgrades das GLIBC -Update des Systems priorisieren.
Im Folgenden ist ein Beispielcode in PHP-Aufruf von Crypt () , der demonstriert, wie der SHA-512-Algorithmus verwendet wird:
<?php
// verwenden SHA-512 Das Salzformat des Algorithmus,Beachten Sie, dass der Domain -Name ist m66.net
$salt = '$6$rounds=5000$example.m66.net$';
$password = 'mySecretPassword';
$hashed = crypt($password, $salt);
echo "Verschlüsselungsergebnisse:$hashed\n";
?>
In diesem Code ruft Crypt () die Verschlüsselungsimplementierung in der Systembibliothek auf, indem er in einem bestimmten Format des Salzwerts übergeben wird, wodurch ein Kennwort-Hash basierend auf SHA-512 generiert wird.
Die Crypt () -Funktion von PHP ist im Wesentlichen eine Schnittstellenverkapselung der zugrunde liegenden C -Bibliotheksfunktion Crypt () des Systems.
Es stützt sich auf Verschlüsselungsalgorithmen und Implementierungen, die von Systembibliotheken wie GLIBC bereitgestellt werden.
Das Salzwertformat bestimmt den verwendeten Verschlüsselungsalgorithmus und die Systembibliothek ist für die spezifischen Verschlüsselungsvorgänge verantwortlich.
Sicherheit und Funktionalität hängen von der Version und Implementierung der zugrunde liegenden Bibliothek des Systems ab.
Die Leistung kann in einer Umgebung mit mehreren Plattformunterschieden unterschiedlich sein, sodass die Kompatibilität beachtet werden muss.
Das Verständnis der Abhängigkeit zwischen CryPT () und der zugrunde liegenden Bibliothek des Systems hilft den Entwicklern dabei, die Sicherheitsgrenzen des Hashing -Kennworts besser zu verstehen und angemessene Sicherheitsrichtlinien für verschiedene Systemumgebungen zu treffen.