PHP-Strings verschlüsseln und entschlüsseln
Frage:
Wie können wir einen PHP-String ver- und entschlüsseln? Für beide sind sowohl eine Originalzeichenfolge als auch ein Salz oder ein Schlüssel erforderlich Prozesse?
Antwort:
Es ist wichtig, den Unterschied zwischen Verschlüsselung und Authentifizierung zu verstehen, bevor Sie fortfahren. Für eine robuste Sicherheit empfehlen wir die verschlüsselte Authentifizierung, die eine Verschlüsselung und anschließende Authentifizierung umfasst.
Vermeiden Sie die Erstellung einer eigenen Kryptografie; Nutzen Sie stattdessen eine zuverlässige Bibliothek, die von Kryptographie-Spezialisten entwickelt wurde. Aufgrund der Benutzerfreundlichkeit und der integrierten authentifizierten Verschlüsselung empfehlen wir dringend die Verwendung von libsodium oder defuse/php-encryption.
Verschlüsselungsschritte:
Entschlüsselungsschritte:
Designüberlegungen:
Wann Sie die Verschlüsselung nicht verwenden sollten:
Libsodium PHP-Beispiel:
function safeEncrypt(string $message, string $key): string { if (mb_strlen($key, '8bit') !== SODIUM_CRYPTO_SECRETBOX_KEYBYTES) { throw new RangeException('Key is not the correct size (must be 32 bytes).'); } $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); $cipher = base64_encode( $nonce. sodium_crypto_secretbox( $message, $nonce, $key ) ); return $cipher; }
Libsodium Entschlüsselung:
function safeDecrypt(string $encrypted, string $key): string { $decoded = base64_decode($encrypted); $nonce = mb_substr($decoded, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, '8bit'); $ciphertext = mb_substr($decoded, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit'); $plain = sodium_crypto_secretbox_open( $ciphertext, $nonce, $key ); return $plain; }
defuse/php-encryption Beispiel:
use Defuse\Crypto\Crypto; use Defuse\Crypto\Key; $message = 'We are all living in a yellow submarine'; $key = Key::createNewRandomKey(); $ciphertext = Crypto::encrypt($message, $key); $plaintext = Crypto::decrypt($ciphertext, $key);
Das obige ist der detaillierte Inhalt vonWie verschlüssele und entschlüssele ich PHP-Strings sicher mit Libsodium oder defuse/php-encryption?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!