Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich Strings in PHP sicher verschlüsseln und entschlüsseln?

Wie kann ich Strings in PHP sicher verschlüsseln und entschlüsseln?

Patricia Arquette
Freigeben: 2024-12-26 20:33:16
Original
446 Leute haben es durchsucht

How Can I Encrypt and Decrypt Strings in PHP Securely?

Wie verschlüsseln und entschlüsseln Sie einen PHP-String?

Beim Verschlüsseln eines PHP-Strings wird der ursprüngliche String mithilfe eines Schlüssels in ein verschlüsseltes Format konvertiert oder Salz. Zum Entschlüsseln der Zeichenfolge ist derselbe Schlüssel oder Salt erforderlich, um die ursprüngliche Zeichenfolge abzurufen.

Verschlüsselungsprozess

  1. Verschlüsseln: Verschlüsseln Sie die ursprüngliche Zeichenfolge Verwendung eines sicheren Algorithmus wie AES-256 im CTR (Counter Mode) oder GCM (Galois/Counter). Modus).
  2. Authentifizierung: Berechnen Sie einen MAC (Message Authentication Code) für die verschlüsselte Zeichenfolge mit HMAC-SHA-256. Kombinieren Sie die verschlüsselte Zeichenfolge und den MAC, um das endgültige verschlüsselte Ergebnis zu generieren.

Entschlüsselungsprozess

  1. Authentifizieren: Neu berechnen Suchen Sie nach dem MAC für das verschlüsselte Ergebnis und vergleichen Sie es mit dem enthaltenen MAC. Abbrechen, wenn sie unterschiedlich sind.
  2. Entschlüsseln:Entschlüsseln Sie die verschlüsselte Zeichenfolge mit dem richtigen Schlüssel.

Wichtige Überlegungen

  • Verwenden Sie authentifizierte Verschlüsselungsalgorithmen (z. B. AES-GCM, ChaCha20-Poly1305) sowohl für die Verschlüsselung als auch für die Authentifizierung.
  • Verwenden Sie sichere Bibliotheken wie libsodium oder defuse/php-encryption für robuste Verschlüsselungs- und Entschlüsselungsfunktionen.
  • Vermeiden Sie die Einführung Ihrer eigenen Kryptografie aufgrund potenzieller Sicherheitsrisiken.
  • Generieren Sie IVs (Initialisierungsvektoren) mit einem CSPRNG (Cryptographically Secure Pseudo-Random Number Generator) wie random_bytes oder Sodium_randombytes.
  • Schützen Sie Verschlüsselungsschlüssel mit Vorsicht. Erwägen Sie die Verwendung eines Schlüsselverschlüsselungsschlüssels oder eines sicheren Schlüsselverwaltungssystems.

Beispiel für die Verwendung von Libsodium:

<?php
use Sodium\Crypto;

function encrypt(string $message, string $key): string
{
    $nonce = random_bytes(Crypto::SECRETBOX_NONCEBYTES);
    $encrypted = Crypto::secretbox($message, $nonce, $key);
    return base64_encode($nonce . $encrypted);
}

function decrypt(string $encrypted, string $key): string
{
    $decoded = base64_decode($encrypted);
    $nonce = substr($decoded, 0, Crypto::SECRETBOX_NONCEBYTES);
    $ciphertext = substr($decoded, Crypto::SECRETBOX_NONCEBYTES);
    $decrypted = Crypto::secretbox_open($ciphertext, $nonce, $key);
    
    return $decrypted;
}

$message = 'Hello, world!';
$key = random_bytes(Crypto::SECRETBOX_KEYBYTES);
$encrypted = encrypt($message, $key);
$decrypted = decrypt($encrypted, $key);

var_dump($encrypted);
var_dump($decrypted);
Nach dem Login kopieren

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!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage