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

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 ...
Disco duro lleno en servidor – Limpieza de l... Vaya faena que veas que de repente el servidor deje de funcionar, y sea porque els disco duro esté lleno. Salen errores, normalmente relacionados con ...
Optimización página web – Paso 3 – Velocidad Cache... Uno de los puntos que Google tiene en cuenta a la hora de posicionarnos, es la utilización de la caché para los elementos estáticos (imágenes, javascr...

Deja un comentario

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

*