So verschlüsseln und entschlüsseln Sie einen PHP-String mit einem Schlüssel
Das Verschlüsseln und Entschlüsseln von Strings in PHP erfordert den Einsatz kryptografischer Techniken zum Schutz sensibler Informationen.
Verschlüsselung
Zum Verschlüsseln einer Zeichenfolge mit ein geheimer Schlüssel:
-
Verwenden Sie AES im CTR-Modus: Verschlüsseln Sie die Zeichenfolge mit dem Advanced Encryption Standard (AES) im Counter-Modus (CTR).
-
Authentifizieren Sie den Chiffretext: Berechnen Sie einen Hash-basierten Nachrichtenauthentifizierungscode (HMAC) über den IV und den Chiffretext mithilfe von HMAC-SHA-256 oder Poly1305 (für Stream-Chiffren).
Entschlüsselung
So entschlüsseln Sie eine verschlüsselte Zeichenfolge mit demselben Schlüssel:
-
Überprüfen Sie den MAC: Berechnen Sie den MAC neu und vergleichen Sie ihn mit dem gespeicherten eins.
-
Entschlüsseln Sie die Nachricht:Entschlüsseln Sie den Chiffretext mit AES im CTR-Modus.
Andere Überlegungen
- Vermeiden Sie das Komprimieren von Daten vor der Verschlüsselung.
- Verwenden Sie mb_strlen() und mb_substr() mit dem 8-Bit-Zeichensatz, um Probleme zu vermeiden.
- Generieren Sie IVs mit einem CSPRNG und vermeiden Sie MCRYPT_RAND.
- Verschlüsseln Sie immer MAC, um sowohl Vertraulichkeit als auch Authentizität sicherzustellen.
Libsodium für PHP
If Wenn Sie PHP 7.2 oder höher verwenden, sollten Sie die Verwendung der libsodium-Bibliothek in Betracht ziehen:
use ParagonIE\Halite\Symmetric\Crypto as SymmetricCrypto;
$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
$ciphertext = SymmetricCrypto::encrypt($message, $key);
$plaintext = SymmetricCrypto::decrypt($ciphertext, $key);
Nach dem Login kopieren
defuse/php-encryption
Als Alternative zu libsodium:
use Defuse\Crypto\Crypto;
$key = Key::createNewRandomKey();
$ciphertext = Crypto::encrypt($message, $key);
$plaintext = Crypto::decrypt($ciphertext, $key);
Nach dem Login kopieren
Passwort Überlegungen
-
Für Passwörter: Hashen Sie sie mit Argon2, scrypt, bcrypt oder PBKDF2-SHA256 mit hohen Iterationen.
-
Zur Authentifizierung : Verwenden Sie stattdessen HMAC-basierte Algorithmen wie HKDF2 oder hash_hmac() Verschlüsselung.
-
Für URL-Parameter:Verwenden Sie ein geeignetes Framework oder eine Bibliothek, die für die URL-Parametervalidierung und den Manipulationsschutz entwickelt wurde.
Das obige ist der detaillierte Inhalt vonWie kann ich Strings in PHP sicher verschlüsseln und entschlüsseln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!