RedSys, mycrypt, openssl y servidor con PHP 7.1

Resulta que en ocasiones cuando actualizas el servidor y pasas a poner una versión de PHP más reciente, como por ejemplo la 7.1.X como es en uno de los casos que estamos tratanso, hay funciones que dejan de utilizarse (deprecated) como mycrypt y hay que utilizar otra opción como puede ser openssl_encrypt.

Dicho de otro modo, actualizo a PHP 7.1.X y la función que utilizaba antes para crear la encriptación 3DES necesaria para la pasarela de RedSys deja de funcionar, y por lo tanto, la pasarela RedSys que tenía dejar de funcionar. Fijaos la función que tenía anteriormente:

1
2
3
4
5
6
7
8
function encrypt_3DES($message, $key) {
  // Se establece un IV por defecto
  $bytes = array(0, 0, 0, 0, 0, 0, 0, 0);
  $iv = implode(array_map("chr", $bytes));
  // Se cifra
  $ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv);
  return $ciphertext;
}

Pues bien. La función mcrypt_encrypt en PHP 7.1.X no puede utilizarse y hay que optar por una nueva función: openssl_encrypt

Cómo quedaría la función que genera la encriptación 3DES para la psarela? utilizaremos la función openssl_encrypt con los siguientes parámetros:

1
2
3
4
function encrypt_3DES($message, $key) {
  $l = ceil(strlen($message) / 8) * 8;
  return substr(openssl_encrypt($message . str_repeat("\0", $l - strlen($message)), 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, "\0\0\0\0\0\0\0\0"), 0, $l);
}

Está comprobado que funciona. Si queréis saber algo más al respecto, podéis visitar el siguiente enlace.

Más información

Artículos relacionados

htaccess: redirección de HTTP a HTTPS Cómo podemos hacer para redireccionar los enlaces http hacia https haciendo que toda la navegación sea segura. Una vez instalamos el certificado de se...
Ficheros base datos Mysql en Xampp en Linux Si buscáis dónde están los ficheros de las base de datos cuando instaláis Xampp: Suponiendo que habéis instalado Xampp en /opt /opt/lampp/var/my...
Saber registros DNS de un dominio En muchas ocasiones, sobretodo en el traslado de dominios, nos podemos encontrar que necesitamos los registros de DNS que tiene el dominio (por ejempl...
Google PageSpeed Si no conoces esta herramienta, tienes todos los números que tu web no esté bien posicionada en Google. Esta herramienta online, te permite saber que ...

Deja un comentario

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

*