Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Verschlüsselung

PHP-Verschlüsselung

WBOY
Freigeben: 2024-08-29 13:02:19
Original
1233 Leute haben es durchsucht

PHP-Verschlüsselung ist nichts anderes, als den Verschlüsselungscode mithilfe einiger Algorithmen zu erhalten, die manchmal als Hashing-Algorithmen bezeichnet werden. Sie arbeiten normalerweise mit einer Zeichenfolge oder einer anderen Eingabe und helfen dann bei der Erstellung eines eindeutigen Fingerabdrucks aus der Zeichenfolge /andere. Bei der Verschlüsselung wird der bestimmte Text/andere Texte in einen anderen Codetext oder Ähnliches umgewandelt, um die Daten sicher zu machen, ohne dass sie den meisten Personen zugänglich gemacht werden, außer einigen, die Zugriff darauf haben. Schauen Sie sich unten die verschiedenen Arten von PHP-Verschlüsselungsmethoden an.

WERBUNG Beliebter Kurs in dieser Kategorie PHP-ENTWICKLER - Spezialisierung | 8-Kurs-Reihe | 3 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Arten der PHP-Verschlüsselung

Heutzutage werden viele verschiedene Arten von Verschlüsselungsmethoden verwendet, aber üblicherweise erfolgt dies durch Hashing, und die zweite ist die Verschlüsselung mit geheimen Schlüsseln und die dritte ist die Umschlagverschlüsselungsmethode. Für jede Verschlüsselungsmethode stehen mehrere Algorithmen oder Verschlüsselungsverfahren zur Auswahl (jede hat ihre eigenen Schwächen und Stärken). Hier konzentrieren wir uns auf die Implementierung von Hashing und die Verschlüsselung mit geheimen Schlüsseln.

1. Hashing

Der Hashing-Algorithmus der Programmiersprache PHP nimmt normalerweise einen Eingabewert und wandelt ihn dann in einen Nachrichtenauszug um. Kurz gesagt: Die Klartextwerte werden in Hash-Werte mit fester Länge umgewandelt und können nur unter Umgehung eines Originalwerts an den eindeutigen Hash-Algorithmus validiert werden. Dadurch eignet sich das Hashing perfekt zum Speichern aller Benutzerkennwörter.

Es ist nur erwähnenswert, dass das Hashing keineswegs eine sichere Lösung für unsere Abfrage ist, aber einige haben nicht alle Hashing-Algorithmen, die gleich sind. Wir haben die effizienten und schnellen MD5- und SHA1-Algorithmen in Betracht gezogen und all diese Dinge dann ideal für die Dateiüberprüfung und Prüfsummenbildung gemacht. Aufgrund ihrer Geschwindigkeit sind die meisten davon ungeeignet, das Passwort des Benutzers zu hashen. Mit der Rechenleistung moderner GPUs kann das Passwort allein mit Hilfe roher Gewalt in wenigen Minuten geknackt werden, indem einfach das ursprüngliche Klartext-Passwort bzw. die ursprünglichen Klartext-Passwörter und absichtlich der langsamere Hash-Algorithmus bzw. die langsameren Hash-Algorithmen, die bcrypt ähneln, preisgegeben werden oder Argon2 wird verwendet.

Durch das Hashing des mit einem Algorithmus generierten Passworts werden die tatsächlichen und ursprünglichen Daten mit Sicherheit verdeckt und der Angreifer wird verlangsamt, während die Entwickler einen der stärksten verfügbaren Algorithmen ausprobieren sollten. Die PHP-Sprache verfügt über eine grundlegende Syntax, die „password_hash()“ lautet.

Dies ist das Beispiel für die Verwendung der Hashing-Technik „bcrypt“.

Code:

<?php
$str1 = 'Password';
$options1 = [
'cost1' => 10,
'salt1' => '$P27r06o9!nasda57b2M22'
];
echo sprintf("The Result of crypt() function on %s is %s\n",
$str1, crypt($str1, $options1['salt1']));
echo "<br>";
echo sprintf("The Result of DEFAULT function on %s is %s\n",
$str1, password_hash($str1, PASSWORD_DEFAULT));
echo "<br>";
echo sprintf("The Result of BCRYPT function on %s is %s\n", $str1,
password_hash($str1, PASSWORD_BCRYPT, $options1));
echo "<br>";
?>
Nach dem Login kopieren

Ausgabe:

PHP-Verschlüsselung

2. Verschlüsselung mit geheimem Schlüssel

Die geheime Schlüsselverschlüsselung von PHP verwendet normalerweise einen einzigen Schlüssel sowohl für die Verschlüsselung als auch für die Entschlüsselung von Daten. Sie wird auch als symmetrische Verschlüsselung bezeichnet. Wenn Sie dazu eine alte Version der PHP-Programmiersprache verwenden, installieren Sie Natrium der PHP-Programmiersprache über PECL.

Zuerst benötigen Sie den Verschlüsselungsschlüssel, der tatsächlich allein durch die Verwendung des Funktionscodes random_bytes() generiert wird. Normalerweise müssen Sie dies jedoch nur einmal tun und speichern es einfach als Umgebungsvariable. Das ist der Schlüssel, den wir geheim halten müssen. Wenn der geheime Schlüssel bekannt ist, wird auch die Verschlüsselung kompromittiert.

$secret_key = random_bytes (SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
Nach dem Login kopieren

Um den Wert, der an die Funktion „sodium_crypto_secretbox()“ übergeben wird, mit unserem Schlüssel/geheimen Schlüssel und $nonce zu verschlüsseln. Dann wird die Nonce-Variable mit der Funktion random_bytes() generiert, und zwar nur deshalb, weil dieselbe/ähnliche Nonce niemals verwendet werden kann.

$nonce = random_bytes(SODIUM_CRYPTO_NONCEBYTES);
$ciphertext = sodium_crypto_secretbox(‘This is secret key!!!’, $nonce, $secret_key);
Nach dem Login kopieren

Dies wird das Problem darstellen, da wir diese Nonce benötigen, die den Wert später/nachher entschlüsseln wird. Aber NONCE/NONCES hat keinen Schlüssel, der geheim gehalten werden muss, sodass wir ihn einfach als $ciphertext voranstellen können und dann ist die Funktion base64_encode() der Wert, der geschieht, bevor er in der eigentlichen Datenbank gespeichert wird.

$encoded1 = base64_encode($nonce . $ciphertext);
Var_dump($encoded1);
Nach dem Login kopieren

Die obige Syntax dient nur der Verschlüsselung des Werts. Um den codierten Wert zu dekodieren/entschlüsseln, verwenden Sie die folgende Syntax.

$decoded1 = base64_decode($encoded1);
Nach dem Login kopieren

Die Länge der Nonce-Variablen oder -Funktion wird mit der Funktion mb_substr() unmittelbar vor der Entschlüsselung des Werts extrahiert.

Dies ist das Beispiel für die Implementierung der Funktion random_bytes(), um die Verschlüsselung mit geheimen Schlüsseln zu verstehen. Hier wird die Länge des Zufallsstrings mit Hilfe von binärem Hex konvertiert, um die Zufallsbytes in einem String zu sichern.

Code:

<?php
$length1 = random_bytes('3');
var_dump(bin2hex($length1));
?>
Nach dem Login kopieren

Output:

PHP-Verschlüsselung

3. Envelope Encryption

We all know that our data is vulnerable if our secret key is known/compromised. Just consider that a malicious user/attacker got access to the server point which is actually hosting our application/other. In this situation, attacker most of the times gets/discovers out the secret key which should be kept as secret. If it is discovered then our data may be in danger of exposing to the malicious user/attacker.

We can use Cloud KMS service which is actually provided by the Google Cloud Key Management Service. It provided a wide variety of so many useful features. It includes automatic key rotation and also the delayed key destruction capability.

Before sending plaintext to the CLOUD KMS, generate a unique encryption key each and every time when we actually write the data to the database. This key is called DEK (Data Encryption Key) which is actually used in encrypting the data. DEK which is sent to the Google Cloud KMS will be encrypted and then it will return the KEK (key encryption key). At last, KEK will be stored side by side in the actual database point which is next to the encrypted data and then the DEK will be destroyed.

Check out the data encryption and decryption as below:

Encryption process
  • It will generate unique DEK – Data Encryption Key
  • Using the SKE (Secret Key Encryption) the data will be encrypted
  • Now the DEK – Data Encryption Key will be sent to the Cloud KMS for encryption purpose which actually returns the KEY – Key Encryption Key.
  • Then the encrypted data will be stored and KEK side by side
  • Then the destruction of the DEK will be done
Decryption Process
  • Now at first, from the database encrypted and KEK (Key Encrypted Key) will be retrieved.
  • Then send KEK for the Cloud KMD for decryption which actually returns the DEK – Data Encryption Key
  • Now the DEK – Data Encryption Key will be used to decrypt the encrypted data.
  • Now DEK – Data Encryption Key will be destroyed.

Conclusion

I hope you learned what is the definition of PHP Encryption and along with the various types of PHP Encryption methods along with the examples by mentioning their brief description. An example is shown here for envelope encryption because it is cloud-based encryption.

Das obige ist der detaillierte Inhalt vonPHP-Verschlüsselung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage