Heim > Backend-Entwicklung > PHP-Tutorial > Wie verschlüssele und entschlüssele ich Daten sicher mit PHP?

Wie verschlüssele und entschlüssele ich Daten sicher mit PHP?

Susan Sarandon
Freigeben: 2024-12-22 19:14:10
Original
717 Leute haben es durchsucht

How to Securely Encrypt and Decrypt Data Using PHP?

So verschlüsseln und entschlüsseln Sie Passwörter sicher in PHP

Das Speichern vertraulicher Benutzerinformationen, wie z. B. ausländische Kontoanmeldeinformationen, erfordert besondere Vorsichtsmaßnahmen, um die Daten zu schützen Sicherheit. Während die Verschlüsselung eine Schutzschicht bietet, ist es wichtig, robuste Methoden einzusetzen, die den unbefugten Zugriff auf Klartextdaten verhindern.

Hashing vs. Verschlüsselung

Hashing ist der bevorzugte Ansatz für Passwortspeicherung. Im Gegensatz zur Verschlüsselung wandelt Hashing Passwörter irreversibel in ein einzigartiges und nicht umkehrbares Format um, sodass es praktisch unmöglich ist, das ursprüngliche Passwort wiederherzustellen. Dadurch wird sichergestellt, dass Angreifer, selbst wenn sie Zugriff auf die gehashten Passwörter erhalten, die Benutzerkonten nicht kompromittieren können.

Verschlüsselungs- und Entschlüsselungsfunktionen

Für Situationen, in denen eine Verschlüsselung erforderlich ist, PHP bietet mehrere Funktionen zum Verschlüsseln und Entschlüsseln von Text. Eine gängige Methode ist die Rijndael-Verschlüsselung, auch bekannt als AES-128:

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted '; // note the spaces
Nach dem Login kopieren

Zu verschlüsseln:

$iv = mcrypt_create_iv(
    mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
    MCRYPT_DEV_URANDOM
);

$encrypted = base64_encode(
    $iv .
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $string,
        MCRYPT_MODE_CBC,
        $iv
    )
);
Nach dem Login kopieren

Zu Entschlüsseln:

$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
        MCRYPT_MODE_CBC,
        $iv
    ),
    ""
);
Nach dem Login kopieren

Warnung

Verschlüsselte Daten sind anfällig für Padding-Oracle-Angriffe, wenn sie nicht authentifiziert werden. Authentifizierte Verschlüsselungsmechanismen sollten immer in Verbindung mit Verschlüsselung verwendet werden.

Best Practices

Um ein Höchstmaß an Sicherheit zu gewährleisten, befolgen Sie diese Best Practices:

  • Verwenden Sie zufällige Verschlüsselungsschlüssel.
  • Speichern Sie verschlüsselte Daten getrennt von Klartext.
  • Zugriff auf Verschlüsselungsschlüssel beschränken.
  • Verschlüsselungsschlüssel regelmäßig wechseln.
  • Bedenken Verwendung von Verschlüsselungsbibliotheken, die sichere Algorithmen implementieren und vor bekannten Angriffen schützen.

Das obige ist der detaillierte Inhalt vonWie verschlüssele und entschlüssele ich Daten sicher mit PHP?. 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