Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/03/2020, 17:20
tuadmin
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
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