Foros del Web » Programando para Internet » PHP »

Problema con openssl Encrypt Decrypt en diferentes versiones PHP

Estas en el tema de Problema con openssl Encrypt Decrypt en diferentes versiones PHP en el foro de PHP en Foros del Web. buenas tengo este método idéntico en 2 aplicaciones diferentes una usa php 7.0 y la otra usa php 7.2 Encrypto el dato en la aplicación ...
  #1 (permalink)  
Antiguo 16/08/2018, 10:15
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 6 meses
Puntos: 50
Problema con openssl Encrypt Decrypt en diferentes versiones PHP

buenas

tengo este método idéntico en 2 aplicaciones diferentes una usa php 7.0 y la otra usa php 7.2

Encrypto el dato en la aplicación A y lo envío a la aplicación B, pero cuando intento hacer el decrypt me retorna vacio o oun valor diferente, que puede estar pasando?

Gracias!

Código PHP:
function encryptDataService($strData,$mtdType=1)
    {
        
// create Default Var
        
$strReturn "";
        try {
            
// set Method Crypt
            
$method 'AES-256-ECB';
            
// set Key Crypt
            
$key    hash('sha256'$this->apiConfiguration->userConfigurationValue("key_crypt_infouser",""));
            
// validate Encrypt
            
if ($mtdType == 1) {
                
$ivSize    openssl_cipher_iv_length($method);
                
$iv        openssl_random_pseudo_bytes($ivSize);
                
$encrypted openssl_encrypt($strData$method$keyOPENSSL_RAW_DATA$iv);
                
$strReturn base64_encode($iv $encrypted);
            
// validate Decrypt
            
} else {
                
$strData   base64_decode($strData);
                
$ivSize    openssl_cipher_iv_length($method);
                
$iv        substr($strData0$ivSize);
                
$strReturn openssl_decrypt(substr($strData$ivSize), $method$keyOPENSSL_RAW_DATA$iv);
            }
        } catch (
Exception $ex) {
         
        }
        
// default Return
        
return $strReturn;
    } 
  #2 (permalink)  
Antiguo 16/08/2018, 14:49
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Problema con openssl Encrypt Decrypt en diferentes versiones PHP

No es mas sencillo usar HTTP SSL ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 16/08/2018, 15:07
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años, 6 meses
Puntos: 120
Pregunta Respuesta: Problema con openssl Encrypt Decrypt en diferentes versiones PHP

Cita:
Iniciado por hhs Ver Mensaje
No es mas sencillo usar HTTP SSL ?
peude que lo este usando o no, pero quiere agregarle una seguridad extra, a datos sencibles,
ahora el problema como bien dice es por las versiones PHP, si bien es algo curioso, y en la misma documentacion de PHP lo comentan

http://es.php.net/manual/es/function...gth.php#122598

//ECB mode should be avoided

lo que indican es que los "cipher methods" como por ejemplo el que usa AES-256-ECB, retorna nulo

openssl_cipher_iv_length("AES-256-ECB") retornara nulo, o 0, por ello, al hacer la encryptacion, no variara, y otro problema es que

Cita:
The values above are tested with PHP 5.5 - 5.6 on Windows. In PHP 7.x is different than this.
indica que los valores va variando, entre versiones pero eso es por que todos los ECB retornan nulo o VOID,

la solucion que te recomiendo es que lo cambies AES-256-ECB por AES-256-CBC
  #4 (permalink)  
Antiguo 17/08/2018, 08:46
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 6 meses
Puntos: 50
Respuesta: Problema con openssl Encrypt Decrypt en diferentes versiones PHP

Buenos días, gracias poer sus respuestas

ya probé con AES-256-CBC y sigue el problema, probe con otros métodos al azar pero ninguno funciona... existe alguna otra solución! Gracias!
  #5 (permalink)  
Antiguo 18/08/2018, 14:33
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años, 6 meses
Puntos: 120
Pregunta Respuesta: Problema con openssl Encrypt Decrypt en diferentes versiones PHP

Cita:
Iniciado por hhs Ver Mensaje
No es mas sencillo usar HTTP SSL ?
peude que lo este usando o no, pero quiere agregarle una seguridad extra, a datos sencibles,
ahora el problema como bien dice es por las versiones PHP, si bien es algo curioso, y en la misma documentacion de PHP lo comentan

http://es.php.net/manual/es/function...gth.php#122598

//ECB mode should be avoided

lo que indican es que los "cipher methods" como por ejemplo el que usa AES-256-ECB, retorna nulo

openssl_cipher_iv_length("AES-256-ECB") retornara nulo, o 0, por ello, al hacer la encryptacion, no variara, y otro problema es que

Cita:
The values above are tested with PHP 5.5 - 5.6 on Windows. In PHP 7.x is different than this.
indica que los valores va variando, entre versiones pero eso es por que todos los ECB retornan nulo o VOID,

la solucion que te recomiendo es que lo cambies AES-256-ECB por AES-256-CBC
tienes habilitado las extensiones OPENSSL de php???, por que probe, tu mismo Script usando AES-256-CBC, y funciona perfecto, lo probe en Versiones PHP5.5 , php 5.6, PHP7.0 y PHP 7.2
  #6 (permalink)  
Antiguo 22/08/2018, 07:27
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 6 meses
Puntos: 50
Respuesta: Problema con openssl Encrypt Decrypt en diferentes versiones PHP

buenas tardes

gracias por la respuesta, el script que genera el token está en PHP 7.0 y el que lo recibe y valida está en 7.2 de esta manera no funciona, a no ser que no se deba a la versión de PHP sino a unoa de las librerías ....

Quedo atento, gracias!
  #7 (permalink)  
Antiguo 22/08/2018, 11:00
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años, 6 meses
Puntos: 120
Respuesta: Problema con openssl Encrypt Decrypt en diferentes versiones PHP

Cita:
Iniciado por helacer Ver Mensaje
buenas tardes

gracias por la respuesta, el script que genera el token está en PHP 7.0 y el que lo recibe y valida está en 7.2 de esta manera no funciona, a no ser que no se deba a la versión de PHP sino a unoa de las librerías ....

Quedo atento, gracias!
vale, conr especto a ello, realize las pruebas con PHP 5.5 , 5.6 ,7.0, 7.2.1 , y va perfecto solo tienes que cambiar el ECB por CBC

lo unico que podria hacer que cause el error, es tu KEY

$this->apiConfiguration->userConfigurationValue("key_crypt_infouser","")

tiene que ser exactamente la misma, en ambas versiones,revisalo minusiosamente, puede que se te haya colado algun caracter RARO, o invisible, un salto de linea, un espacion, un TAB ,etc

Etiquetas: openssl, versiones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:08.