ssheduardo / sermepa

Clase para utilizar la pasarela de pagos redsys, sermepa.
MIT License
194 stars 59 forks source link

Error al encriptar 3des #47

Closed firefiesta closed 7 years ago

firefiesta commented 7 years ago

Buenas, he estado probando con tu repositorio, y con una version de php 5.3.27 (exigencias de un cliente)y la encriptación a 3DES para la firma no la realiza correctamente por lo que he usado la función mcrypt_encrypt con la que si la realiza correctamente. Tampoco me he puesto a investigar mucho porqué fallaba ya que necesitaba una solución rápida .Te copio aquí la solución por si hiciera hiciera falta.

private function encrypt_3DES($data, $key){ / $iv = "\0\0\0\0\0\0\0\0"; $data_padded = $data; if (strlen($data_padded) % 8) { $data_padded = str_pad($data_padded,strlen($data_padded) + 8 - strlen($data_padded) % 8, "\0"); } //$ciphertext = openssl_encrypt($data_padded, "DES-EDE3-CBC", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $iv); $ciphertext = openssl_encrypt($data_padded, "DES-EDE3-CBC", $key, true, $iv); return $ciphertext; / $iv = implode(array_map('chr', array(0, 0, 0, 0, 0, 0, 0, 0))); return mcrypt_encrypt(MCRYPT_3DES, $key, $data, MCRYPT_MODE_CBC, $iv); }

ssheduardo commented 7 years ago

Hola, En la versión anterior a la 1.2 se usaba mcrypt. https://github.com/ssheduardo/sermepa/blob/1.1.6.2/src/Sermepa/Tpv/Tpv.php#L599

Se realizo el cambio dado que la versión 5.3 se esta dejando de usar para dar paso a php 7.X Saludos