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

Acceder a web creada en Plesk sin dominio Supongamos que tenemos un servidor con el panel Plesk para administrarlo. Supongamos también que creamos un sitio web, y que aún el dominio .com no ap...
Linux.Encoder.1 amenaza servidores Linux Linux.Encoder.1 es un ransomware que encripta los ficheros de Linux, obligándote a pagar para que te faciliten la contraseña para poder desencriptarlo...
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...
Conocer la ruta absoluta de nuestra web En muchas ocasiones, la mayoría por temas de configuración de nuestro CMS (Joomla, WordPress...), necesitamos saber la ruta real de nuestra web. Sabem...

Deja un comentario

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

*