TRIPLE-DES-Verschlüsselung/Entschlüsselung mit php

Ich habe diese TRIPLE-DES-VERSCHLÜSSELUNG CODE IN PHP

    $encryption_key = "CE51E06875F7D964";
    $data='tokenNo=test&securityCode=111' ;
    echo $desEncryptedData = encryptText_3des($data, $encryption_key);//outputs 3des encrypted data

function encryptText_3des($plainText, $key) {
    $key = hash("md5", $key, TRUE); 
    for ($x=0;$x<8;$x++) {
        $key = $key.substr($key, $x, 1);
    }
    $padded = pkcs5_pad($plainText,
        mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC));
    $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, $padded, MCRYPT_MODE_CBC));
    return $encrypted;
}
 function pkcs5_pad ($text, $blocksize)   
{
    $pad = $blocksize - (strlen($text) % $blocksize);
    return $text . str_repeat(chr($pad), $pad);
}

Im in der Lage, die Daten zu verschlüsseln, wie xcFEvIdLXc2fjhG1i4iPOQu5L6ahxwZVucDOPqeMM2E=

Nun habe ich den key,werde ich in der Lage zu entschlüsseln dieser Daten-nur-text-format?

Versuchte ich es auf diese Weise

            $encryption_key = "CE51E06875F7D964";
        $data='xcFEvIdLXc2fjhG1i4iPOQu5L6ahxwZVucDOPqeMM2E=' ; //encrypted data
        echo $desEncryptedData = encryptText_3des($data, $encryption_key);//outputs 3des encrypted data

    function encryptText_3des($plainText, $key) {
        $key = hash("md5", $key, TRUE); 
        for ($x=0;$x<8;$x++) {
            $key = $key.substr($key, $x, 1);
        }
        $padded = pkcs5_unpad($plainText,
            mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC));
        $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, $padded, MCRYPT_MODE_CBC));
        return $encrypted;
    }

    function pkcs5_unpad($text)   

    {
        $pad = ord($text{strlen($text)-1});
        if ($pad > strlen($text)) return false;
        if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;
        return substr($text, 0, -1 * $pad);
    }

Aber ich könnte nicht es tun.IST das, was ich Tue, falsch ist?Bitte schlagen Sie mich eine Möglichkeit das zu entschlüsseln?Ist der Verschlüsselungs-Schlüssel wird zum entschlüsseln der Daten verwendet, die in die triple-DES?Bitte helfen Sie

Verschlüsseln von Daten (cookies oder response-Parameter) ist notorisch schwierig, richtig zu machen. CBC-Modus stellt eine triviale padding-oracle-Schwachstelle. Replay-Angriffe werden sogar noch einfacher. Schlüsselableitung ist wirklich dubios auch in diesem Fall.
Es ist am besten nicht zu verwenden, PHP mcrypt, es ist abandonware, wurde nicht aktualisiert, in den Jahren, und unterstützt nicht den standard PKCS#7 (geborene PKCS#5) - Polsterung, die nur nicht-standard-null-padding, der kann auch nicht verwendet werden mit binären Daten. mcrypt hat viele hervorragende bugs aus dem Jahr 2003. Die mcrypt-extension ist veraltet, entfernt werden PHP-7.2. Betrachten Sie stattdessen mit entschärfen oder RNCryptor, Sie bieten eine vollständige Lösung und sind gepflegt und korrekt ist.
Die schlüsselableitung schlecht ist, verwenden Sie PBKDF2 oder einem ähnlichen Schlüssel-Ableitung-Methode.
Ein CBC-padding-oracle-Angriff funktioniert nur, wenn die Polsterung Fehler zurückgegeben, um den Angreifer.

InformationsquelleAutor Piya | 2014-03-23

Schreibe einen Kommentar