Foros del Web » Programando para Internet » PHP »

encriptar y desencriptar datos para enviar por get

Estas en el tema de encriptar y desencriptar datos para enviar por get en el foro de PHP en Foros del Web. tengo estas funciones para encriptar y desencriptar pero me arroja este error openssl_decrypt(): IV passed is only 15 bytes long, cipher expects an IV of ...
  #1 (permalink)  
Antiguo 05/03/2020, 06:26
Avatar de trofserpiente  
Fecha de Ingreso: julio-2012
Ubicación: Lerida
Mensajes: 220
Antigüedad: 7 años, 8 meses
Puntos: 1
Exclamación encriptar y desencriptar datos para enviar por get

tengo estas funciones para encriptar y desencriptar pero me arroja este error

openssl_decrypt(): IV passed is only 15 bytes long, cipher expects an IV of precisely 16 bytes, padding with \0 in php varia los bytess segun lo que se encripte.

este es el codigo

Código PHP:

class Encryption {

var 
$skey "datosystem1234"// llave privada
var $method 'aes-256-cbc';


public function 
encode($value){

    if(!
$value){return false;}else{

        
    
$iv openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    
$encrypted=openssl_encrypt($value$this->method$this->skey0$iv);

    return 
base64_encode($encrypted."::".$iv);
    
    }    
}

//**************************************************************************************
public function decode($value){

    if(!
$value){return false;}else{
        list(
$encrypted_data$iv) = explode('::'base64_decode($value), 2);
        
//list($encrypted_data, $iv) = explode('::', trim($this->safe_b64decode($value)), 2);
        
return openssl_decrypt($encrypted_data$this->method$this->skey0$iv);
    }

}




}

si el algo normal ejemplocasa lo desencripta y desencripta normal
gracias de antemanopor la ayuda
__________________
Luis Alfonso Cruz Valbuena
[email protected]
  #2 (permalink)  
Antiguo 05/03/2020, 16:20
 
Fecha de Ingreso: abril-2006
Mensajes: 379
Antigüedad: 14 años
Puntos: 80
Respuesta: encriptar y desencriptar datos para enviar por get

Cita:
Iniciado por trofserpiente Ver Mensaje
tengo estas funciones para encriptar y desencriptar pero me arroja este error

openssl_decrypt(): IV passed is only 15 bytes long, cipher expects an IV of precisely 16 bytes, padding with \0 in php varia los bytess segun lo que se encripte.

este es el codigo

Código PHP:

class Encryption {

var 
$skey "datosystem1234"// llave privada
var $method 'aes-256-cbc';


public function 
encode($value){

    if(!
$value){return false;}else{

        
    
$iv openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    
$encrypted=openssl_encrypt($value$this->method$this->skey0$iv);

    return 
base64_encode($encrypted."::".$iv);
    
    }    
}

//**************************************************************************************
public function decode($value){

    if(!
$value){return false;}else{
        list(
$encrypted_data$iv) = explode('::'base64_decode($value), 2);
        
//list($encrypted_data, $iv) = explode('::', trim($this->safe_b64decode($value)), 2);
        
return openssl_decrypt($encrypted_data$this->method$this->skey0$iv);
    }

}




}

si el algo normal ejemplocasa lo desencripta y desencripta normal
gracias de antemanopor la ayuda
Código PHP:
<?php 
class Encryption {

var 
$skey "datosystem1234"// llave privada
var $method 'aes-256-cbc';


public function 
encode($value){

    if(!
$value){return false;}else{

        
    
$iv openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    
$encrypted=openssl_encrypt($value$this->method$this->skey0$iv);

    return 
base64_encode($encrypted."::".$iv);
    
    }    
}

//**************************************************************************************
public function decode($value){

    if(!
$value){return false;}else{
        list(
$encrypted_data$iv) = explode('::'base64_decode($value), 2);
        
//list($encrypted_data, $iv) = explode('::', trim($this->safe_b64decode($value)), 2);
        
return openssl_decrypt($encrypted_data$this->method$this->skey0$iv);
    }

}
}

$enc= new Encryption();
$txt_encoded$enc->encode("hola como estas");
var_dump(($txt_encoded)  );
var_dump($enc->decode($txt_encoded)  );
la funcion esta perfecta, que version de PHP usas?? y en que entorno, windows,linux, apache, modo consola?? etc
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 06/03/2020, 08:30
Avatar de trofserpiente  
Fecha de Ingreso: julio-2012
Ubicación: Lerida
Mensajes: 220
Antigüedad: 7 años, 8 meses
Puntos: 1
Exclamación Respuesta: encriptar y desencriptar datos para enviar por get

estoy usando php 7.2.28 en windows con apache para realizar pruebas
__________________
Luis Alfonso Cruz Valbuena
[email protected]
  #4 (permalink)  
Antiguo 07/03/2020, 12:55
 
Fecha de Ingreso: abril-2006
Mensajes: 379
Antigüedad: 14 años
Puntos: 80
Respuesta: encriptar y desencriptar datos para enviar por get

ejecuta el script, en el servidor que comentas, y mira si devuelve el resultado correcto de ser asi, entonces el error proviene de otro lado
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9



La zona horaria es GMT -6. Ahora son las 11:13.