Heim > Artikel > Backend-Entwicklung > Die Rolle der PHP-Verschlüsselung
Die Rolle der PHP-Verschlüsselung
Verschlüsselung: Um Daten zu verschlüsseln, wird der Klartext nicht angezeigt .
Im Entwicklungsprozess von PHP ist es häufig notwendig, einige Daten (z. B. Benutzerkennwörter) zu verschlüsseln
1. Verschlüsselungstyp:
1. Einweg-Hash-Verschlüsselung
dient der Hash-Berechnung von Informationen beliebiger Länge, um eine Ausgabe fester Länge zu erhalten. Dieser Hash-Berechnungsprozess ist unidirektional, das heißt, die Ausgabeinformationen fester Länge können nicht sein berechnet, um Enter-Informationen zu erhalten.
(1) Merkmale: Lawineneffekt, Ausgabe fester Länge und Irreversibilität.
(2) Die Aufgabe besteht darin, die Datenintegrität sicherzustellen.
(3) Verschlüsselungsalgorithmus: md5 (Standardschlüssellänge 128 Bit), sha1 (Standardschlüssellänge 160 Bit), md4, CRC-32
2. Symmetrische Hash-Verschlüsselung
Symmetrische Verschlüsselung bedeutet, dass Verschlüsselung und Entschlüsselung denselben Schlüssel verwenden oder voneinander abgeleitet werden können.
(1) Die Verschlüsselungspartei und die Entschlüsselungspartei verwenden denselben Schlüssel.
(2) Die Ver- und Entschlüsselungsgeschwindigkeit ist relativ hoch und für die langfristige Nutzung von Daten geeignet.
(3) Der Schlüsselübertragungsprozess ist unsicher und leicht zu knacken, und auch die Schlüsselverwaltung ist mühsam.
(4) Verschlüsselungsalgorithmen: DES (Data Encryption Standard), 3DES, AES (Advanced Encryption Standard, unterstützt die Verschlüsselung von 128-, 192-, 256- und 512-Bit-Schlüsseln), Blowfish.
3. Asymmetrische Hash-Verschlüsselung
Asymmetrische Verschlüsselung und Entschlüsselung verwenden unterschiedliche Schlüssel, die öffentlich zugänglich sind, und der andere ist nur dem Besitzer bekannt und wird aufgerufen den öffentlichen Schlüssel als privaten Schlüssel.
(1) Jeder Benutzer besitzt ein Schlüsselpaar zur Verschlüsselung: öffentlicher Schlüssel und privater Schlüssel.
(2) Verschlüsselung mit öffentlichem Schlüssel, Entschlüsselung mit privatem Schlüssel; Verschlüsselung mit privatem Schlüssel, Entschlüsselung mit öffentlichem Schlüssel.
(3) Der Prozess der Übertragung öffentlicher Schlüssel ist unsicher und kann leicht gestohlen und ersetzt werden.
(4) Da die vom öffentlichen Schlüssel verwendete Schlüssellänge sehr lang ist, ist die Verschlüsselungsgeschwindigkeit des öffentlichen Schlüssels sehr langsam und wird im Allgemeinen nicht zur Verschlüsselung verwendet.
(5) Ein bestimmter Benutzer verwendet seinen privaten Schlüssel zum Verschlüsseln, und andere Benutzer verwenden ihren öffentlichen Schlüssel zum Entschlüsseln, um die Funktion einer digitalen Signatur zu erreichen.
(6) Eine weitere Funktion der Public-Key-Verschlüsselung besteht darin, den Schlüsselaustausch zu realisieren.
(7) Verschlüsselungs- und Signaturalgorithmen: RSA, ELGamal.
(8) Public-Key-Signaturalgorithmus: DSA.
Hinweise:
(1) RSA: Es handelt sich um einen von der RSA Company erfundenen Algorithmus mit öffentlichem Schlüssel, der Schlüssel variabler Länge unterstützt variabel;
(2) DSA (Digital Signature Algorithm): Digitaler Signaturalgorithmus, ein Standard-DSS (Digital Signature Standard);
(3) Weil asymmetrische Verschlüsselungsalgorithmen schneller laufen als symmetrische Verschlüsselungsalgorithmen Der Verschlüsselungsalgorithmus ist viel langsamer. Wenn wir eine große Datenmenge verschlüsseln müssen, wird empfohlen, einen symmetrischen Verschlüsselungsalgorithmus zu verwenden, um die Verschlüsselungs- und Entschlüsselungsgeschwindigkeit zu erhöhen.
Symmetrische Verschlüsselungsalgorithmen können keine Signaturen implementieren, daher können Signaturen nur asymmetrische Algorithmen sein.
(4) Da die Schlüsselverwaltung des symmetrischen Verschlüsselungsalgorithmus ein komplexer Prozess ist, bestimmt die Verwaltung des Schlüssels direkt seine Sicherheit. Daher können wir bei kleinen Datenmengen die Verwendung eines asymmetrischen Verschlüsselungsalgorithmus in Betracht ziehen.
(5) Im tatsächlichen Betrieb verwenden wir normalerweise Folgendes: Verwenden Sie einen asymmetrischen Verschlüsselungsalgorithmus, um den Schlüssel eines symmetrischen Algorithmus zu verwalten, und verwenden Sie dann einen symmetrischen Verschlüsselungsalgorithmus, um die Daten zu verschlüsseln, damit wir sie integrieren Die beiden Arten von Verschlüsselungsalgorithmen haben den Vorteil, dass sie nicht nur die Vorteile einer schnellen Verschlüsselungsgeschwindigkeit erzielen, sondern auch die Vorteile einer sicheren und bequemen Schlüsselverwaltung realisieren.
2. Häufig verwendete Verschlüsselungsfunktionen in PHP:
1.MD5-Verschlüsselung:
string md5 ( string $str [, bool $raw_output = false ] )
(1) md5() ist standardmäßig 32. Gibt die zurück Hash-Wert in hexadezimaler Zeichenform. Der erste ist die zu verschlüsselnde Zeichenfolge und der zweite ist der boolesche Wert von raw_output. Der Standardwert ist „false“, wenn er auf „true“ gesetzt ist. gibt den ursprünglichen Nachrichtenauszug im 16-Bit-Binärformat zurück
(2) md5() ist eine Einwegverschlüsselung und verfügt über keinen umgekehrten Entschlüsselungsalgorithmus, kann aber dennoch einige gängige Zeichenfolgen, Aufzählungen, Kollisionen und andere erfassen Methoden zum Knacken
2.Crypt-Verschlüsselung:
string crypt ( string $str [, string $salt ] )
(1)crypt() akzeptiert zwei Parameter, der erste ist die Zeichenfolge, die verschlüsselt werden muss, der zweite ist der Salt-Wert (der ist der Verschlüsselungsinterferenzwert, falls nicht angegeben, wird er standardmäßig automatisch von PHP generiert);
gibt eine Hash-Zeichenfolge oder eine Zeichenfolge mit weniger als 13 Zeichen zurück, letzteres dient der Unterscheidung des Salt-Werts.
(2)crypt() ist eine Einwegverschlüsselung, genau wie MD5.
3. Sha1-Verschlüsselung:
string sha1 ( string $str [, bool $raw_output = false ])
(1) ist MD5 sehr ähnlich. Der Unterschied besteht darin, dass sha1() standardmäßig einen 40-stelligen Hash-Wert zurückgibt Der erste ist der verschlüsselte String,
Der zweite ist der boolesche Wert von raw_output, der Standardwert ist false, wenn er auf true gesetzt ist, gibt sha1() das ursprüngliche 20-Bit-Originalformat zurück Message Digest
(2)sha1() ist ebenfalls eine einzeilige Verschlüsselung, es gibt keinen umgekehrten Entschlüsselungsalgorithmus
4 Urlencode-Verschlüsselung:
string urlencode ( string $str )
(1) Eins Parameter, übergeben Sie die zu verschlüsselnde Zeichenfolge (wird normalerweise zum Verschlüsseln von URLs verwendet)
(2) urlencode ist eine Zwei-Wege-Verschlüsselung und kann mit urldecode verschlüsselt werden (genau genommen handelt es sich nicht um eine echte Verschlüsselung)
(3) Zeichenfolge mit Rückgabezeichen. Alle nicht alphanumerischen Zeichen in dieser Zeichenfolge außer -_ werden durch ein Prozentzeichen (%) gefolgt von zwei hexadezimalen Ziffern ersetzt, und Leerzeichen werden als Pluszeichen (+) codiert.
(3) Gemeinsame Konvertierungszeichen von urlencode()
? => %3F = => %3D % => %25 & => %26 \ => %5C 空格 => %5C
5.base64编码加密:
string base64_decode ( string $encoded_data )
(1)base64_encode()接受一个参数,也就是要编码的数据(这里不说字符串,是因为很多时候base64用来编码图片)
(2)base64_encode()为双向加密,可用base64_decode()来解密
Das obige ist der detaillierte Inhalt vonDie Rolle der PHP-Verschlüsselung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!