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

Linda Hamilton
Freigeben: 2024-11-21 12:39:16
Original
670 Leute haben es durchsucht

How to Securely Encrypt Data in PHP and Decrypt It Using CryptoJS?

Mit PHP verschlüsseln, mit Javascript entschlüsseln (cryptojs)

Problemstellung:

Sie Sie stehen vor Herausforderungen bei der grundlegenden Verschlüsselung/Entschlüsselung, insbesondere bei der Verschlüsselung in PHP und der Entschlüsselung in Javascript unter Verwendung cryptojs.

Klarstellung:

Ihr PHP-Code umfasst die Verschlüsselung mit der mcrypt-Bibliothek und die Base64-Kodierung. In der Zwischenzeit versucht Ihr Javascript-Code, den verschlüsselten Text mit CryptoJS zu entschlüsseln, aber Sie stoßen auf Schwierigkeiten.

Lösung:

Der bereitgestellte Code enthält veraltete Verschlüsselungstechniken, insbesondere mcrypt, dessen Verwendung nicht mehr empfohlen wird. Um Ihre Verschlüsselungs-/Entschlüsselungsziele zu erreichen, können Sie die in der OpenSSL-Bibliothek von PHP implementierte AES-Verschlüsselung nutzen.

PHP-Verschlüsselung/Entschlüsselungsimplementierung:

<?php
function encrypt($passphrase, $value)
{
    $salt = openssl_random_pseudo_bytes(8);
    $salted = '';
    $dx = '';
    while (strlen($salted) < 48) {
        $dx = md5($dx . $passphrase . $salt, true);
        $salted .= $dx;
    }
    $key = substr($salted, 0, 32);
    $iv = substr($salted, 32, 16);
    $encrypted_data = openssl_encrypt(json_encode($value), 'aes-256-cbc', $key, true, $iv);
    $data = array("ct" => base64_encode($encrypted_data), "iv" => bin2hex($iv), "s" => bin2hex($salt));
    return json_encode($data);
}

function decrypt($passphrase, $jsonStr)
{
    $j = json_decode($jsonStr, true);
    $cipherParams = CryptoJS.lib.CipherParams.create({
        ciphertext: CryptoJS.enc.Base64.parse(j.ct)
    });
    if (j.iv) $cipherParams.iv = CryptoJS.enc.Hex.parse(j.iv)
    if (j.s) $cipherParams.salt = CryptoJS.enc.Hex.parse(j.s)

    $key = substr($result, 0, 32);
    $data = openssl_decrypt($ct, 'aes-256-cbc', $key, true, $iv);
    return json_decode($data, true);
}
Nach dem Login kopieren

Javascript Entschlüsselung Implementierung:

function decrypt(passphrase, encryptedData) {
    var cipherParams = CryptoJSAesJson.parse(encryptedData);
    var decrypted = CryptoJS.AES.decrypt(cipherParams, passphrase, {format: CryptoJSAesJson}).toString(CryptoJS.enc.Utf8);
    return decrypted;
}
Nach dem Login kopieren

Beispielverwendung:

$encrypted = encrypt('my passphrase', 'value to encrypt');
echo $encrypted; // Encrypted data with salt, iv, and cipher text
Nach dem Login kopieren
var decrypted = decrypt('my passphrase', $encrypted);
console.log(decrypted); // Original 'value to encrypt'
Nach dem Login kopieren

Dieser Ansatz gewährleistet eine sichere und interoperable Verschlüsselung/Entschlüsselung zwischen PHP und Javascript und nutzt diese Aktuelle Verschlüsselungstechniken und Wahrung der Kompatibilität mit Kryptojs.

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