Pregunta sobre Gravitate Encryption de Wordpress:

No es compatible con PHP 7.2

Un usuario pregunt贸 馃憞

Este plugin utiliza la funci贸n mcrypt_create_iv (), que se depreci贸 en PHP 7.1 y se elimin贸 en 7.2. Por lo que provocar谩 un error fatal en 7.2.

http://php.net/manual/en/function.mcrypt-create-iv.php

El desarrollador parece haber abandonado este plugin, por desgracia. Sin embargo, encontr茅 este reemplazo disponible para comprar y parece funcionar perfectamente.

https://codecanyon.net/item/gravity-forms-encrypted-fields/18564931

(@ joris-van-der-horst)

Hace 1 a帽o, 10 meses

Entonces, 驴no se est谩 ejecutando realmente en php 7.2?

Todo lo mejor,

Joris

(@eatingrules)

Hace 1 a帽o, 10 meses

No lo he probado de nuevo desde que publiqu茅 esto hace unos cinco meses, pero el plugin no se ha actualizado desde entonces. Entonces, hasta donde yo s茅, todav铆a no funciona con PHP 7.2, y el plugin parece haber sido abandonado.

(@softmixt)

Hace 1 a帽o, 9 meses

Creo que est谩 abandonado, pero tuve que arreglar el plugin por m铆 mismo, as铆 que lo que hice fue el siguiente archivo de plugin abierto: gds_encryption.php
luego sustituya:

cifrado de funci贸n p煤blica (valor $)

 public function encrypt($value)
    {
        $options = unserialize(get_option('gds_encryption'));

        ///////////////////////////////////////////////////////////////////////////////////////////////////
        // Symmetric Encryption
        ///////////////////////////////////////////////////////////////////////////////////////////////////

        if ($options['encription_type'] == 'symmetric') {
            $key = hash('SHA256', "djkns(235mk^p" . "7%r?1C" . trim($options['encryption_key']) . "jr-3", true);
            srand();

            if (version_compare(phpversion(), '7.0.0', '<')) {
                $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
                if (strlen($iv_base64 = rtrim(base64_encode($iv), '=')) != 22) return false;
                $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $value . md5($value), MCRYPT_MODE_CBC, $iv));
                $value = "enx2:" . $iv_base64 . $encrypted;
            } else {
                $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-256-CBC'));
                if (strlen($iv_base64 = rtrim(base64_encode($iv), '=')) != 22) return false;
                $encrypted = base64_encode(openssl_encrypt($value . md5($value), 'AES-256-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $iv));
                $value = "enx2:" . $iv_base64 . $encrypted;
            }
        } else if ($options['encription_type'] == 'asymmetric') {
            openssl_seal($value, $encrypted, $ekey, array(openssl_get_publickey(trim($options['public_key']))));
            $ekey = base64_encode($ekey[0]);

            $value = "enx1:" . $ekey . ':' . base64_encode($encrypted);
        } else if ($options['encription_type'] == 'encryption_weak') {
            $key = "7%r?1C" . trim($options['encryption_key']) . "jr-3";
            $value = base64_encode($value);
            $value = "enx3:" . base64_encode(substr($value, 0, 3) . substr($value, 0, -5) . substr(base64_encode($key), 0, 6) . substr($value, -5) . substr($value, -3));
        }

        return $value;
    }

y tambi茅n reemplazar:

desencriptar funci贸n p煤blica (valor $)

public function decrypt($value)
    {
        $options = unserialize(get_option('gds_encryption'));

        if (strpos($value, "enx") !== false) {
            if (strpos($value, "enx2:") !== false) {

                $value = str_replace("enx2:", "", $value);
                $salt = "djkns(235mk^p";
                $password = "7%r?1C" . trim($options['encryption_key']) . "jr-3";
                $key = hash('SHA256', $salt . $password, true);
                $iv = base64_decode(substr($value, 0, 22) . '==');

                if (version_compare(phpversion(), '7.0.0', '<')) {
                    $encrypted = substr($value, 22);
                    $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($encrypted), MCRYPT_MODE_CBC, $iv), "4");
                } else {
                    $encrypted = base64_decode(substr($value, 22));
                    $decrypted = rtrim(openssl_decrypt($encrypted, "AES-256-CBC", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $iv), "4");
                }

                $hash = substr($decrypted, -32);
                $decrypted = substr($decrypted, 0, -32);
                if (md5($decrypted) != $hash) $value = '';
                $value = $decrypted;

            } else if (strpos($value, "enx1:") !== false) {
                if (empty($options['private_key'])) {
                    $value = 'XXXXXXXXX';
                } else {
                    $value = str_replace("enx1:", "", $value);
                    $split = explode(":", $value); // Split the String on : (Colon).  First part is the Envelope Key. Second Part is the Encrypted Data.
                    $envelope_key = base64_decode($split[0]);
                    $encrypted_data = base64_decode($split[1]);
                    openssl_open($encrypted_data, $decrypted_data, $envelope_key, openssl_get_privatekey(trim($options['private_key'])));

                    $value = $decrypted_data;
                }
            } else if (strpos($value, "enx3:") !== false) {
                $key = "7%r?1C" . trim($options['encryption_key']) . "jr-3";
                $value = base64_decode(str_replace("enx3:", "", $value));
                $value = substr($value, 3, -3);
                $value = base64_decode(str_replace(substr(base64_encode($key), 0, 6), '', $value));
            }
        }

       // $encrypt = encrypt($value)

        return $value;
    }

tambi茅n hay un error de funci贸n funci贸n p煤blica gform_get_field_value ($ valor, $ cliente potencial, $ campo, $ input_id)
puedes repintar:


$long =  $wpdb->get_row($wpdb->prepare("SELECT value FROM " . $wpdb->prefix . "rg_lead_detail_long WHERE<code>lead_detail_id</code>= %d", $detail->id)) ;

por la presente:


$long = isset($detail->id) ? $wpdb->get_row($wpdb->prepare("SELECT value FROM " . $wpdb->prefix . "rg_lead_detail_long WHERE<code>lead_detail_id</code>= %d", $detail->id)) : [];

ahora para php 7.2 usa openssl_decrypt, openssl_encrypt en lugar de mcrypt.

Esta respuesta fue modificada hace 1 a帽o, 9 meses por.

(@moondrop)

Hace 1 a帽o, 7 meses

隆Gracias @softmixt por publicar el c贸digo actualizado con openssl! Pude aplicar su c贸digo y el funci贸n p煤blica de descifrado trabajando con mis entradas antiguas de mcrypt.

Sin embargo, parece que no lo entiendo cifrado de funci贸n p煤blica Trabajo. Me di cuenta:

$encrypted = base64_encode(openssl_encrypt($value . md5($value), 'AES-256-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $iv));

cordel blanco de vuelta a m铆. 驴Alguna idea de por qu茅 podr铆a ser esto?

Esta respuesta fue modificada hace 1 a帽o, 7 meses. Esta respuesta fue modificada hace 1 a帽o, 7 meses.

驴Solucion贸 tu problema??

0 / 0

Deja una respuesta 0

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *