Servidores

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

LAMPP y XAMPP – Usuario FTP por defecto Lo que a continuación voy a detallar, sólo es válido para servidores web LAMPP y XAMPP instalados en local. Instalamos nuestro servidor en local, lo p...
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...
XAMPP – Apache no arranca en Windows 10 Para montar un entorno de desarrollo en nuestro PC, muchos optamos por soluciones como XAMPP o WAMPP para instalar nuestro servidor (Apache, Maria DB ...
PayPal cambia a TLS1.2 y HTTP 1.1 en junio del 201... Pues sé, por el bien de la seguridad, PayPal este junio cambiarà el protocolo de comunicación a TLS 1.2. Si tu servidor no lo soporta, no podrás conec...