que tengo un poco de una extraña en esta clase:advertencia mcrypt pero aún descifra los datos
<?php
namespace lib;
/**
* Short description of Crypt
*
* @author xxxx
* @package
*/
class Encryption
{
/**
* Short description of _ch
* handle to the mcrypt resource
*
* @access private
* @var $_ch
*/
private $_ch;
/**
* Short description of __construct
*
* @access public
* @author xxxx
* @param
* @return void
*/
public function __construct($keyData = NULL, $algorithm = \MCRYPT_RIJNDAEL_256, $mode = MCRYPT_MODE_ECB, $encLibPath = '', $modeDir = '')
{
$this->_ch = mcrypt_module_open($algorithm, $encLibPath, $mode, $modeDir);
$vector = mcrypt_create_iv (mcrypt_enc_get_iv_size($this->_ch), \MCRYPT_DEV_URANDOM);
$keySize = mcrypt_enc_get_key_size($this->_ch);
$key = substr(hash('SHA512', $keyData . $keySize), 0, $keySize);
$x = mcrypt_generic_init($this->_ch, $key, $vector);
}
/**
* Short description of encrypt
*
* @access public
* @author xxxx
* @param String $str
* @return String $res
*/
public function encrypt($str)
{
if(!is_string($str))
{
throw new \InvalidArgumentException('Attemptig to encrypt data that is not a string');
return false;
}
$res = mcrypt_generic($this->_ch, $str);
mcrypt_generic_deinit($this->_ch);
mcrypt_module_close($this->_ch);
#var_dump($str,$res);
return $res;
}
/**
* Short description of decrypt
*
* @access public
* @author xxxx
* @param String $str
* @return String $res
*/
public function decrypt($str)
{
if(!is_string($str))
{
throw new \InvalidArgumentException('Attemptig to decrypt data that is not a string');
return false;
}
82 $res = mdecrypt_generic($this->_ch, $str);
84 mcrypt_generic_deinit($this->_ch);
85 mcrypt_module_close($this->_ch);
#var_dump($str,$res);
return trim($res);
}
}
cuando se llama a este modo:
<?php
$encryption = new \lib\Encryption('somekey');
echo $encryption->decrypt($safeInfo);
rendimientos estrangular:
Advertencia: mdecrypt_generic(): 90 no es un recurso de MCrypt válido en E: \ htdocs \ sitio \ aplicación \ lib \ encryption.cls.php en la línea 82
Advertencia: mcrypt_generic_deinit(): 90 no es un recurso de MCrypt válido en E: \ htdocs \ sitio \ aplicación \ lib \ encryption.cls.php en la línea 84
Advertencia: mcrypt_module_close(): 90 no es una MCrypt válida de recursos en E: \ htdocs \ sitio \ application \ lib \ encryption.cls.php en la línea 85
(. estas líneas se muestran en la clase de cifrado)
Y
la cadena descifrada esperado (como en desencriptado con éxito).
Le agradecería a cualquiera que pueda señalar por qué las advertencias se plantean y por qué no parece afectar el resultado.
PS cualquier comentario sobre la eficacia de la clase de encriptación más bienvenida.
¿Cuál es el valor de '$ this -> _ ch'? – jeroen
var_dump ($ this -> _ ch) yields resource (90, mcrypt) –
Intenté ejecutar el script tanto en Linux como en Windows. No recibí ninguna advertencia. Me aseguré de activar todos los errores también. No pude reproducir el mismo resultado. Si llamo mycrypt_module_close primero, mostraría las advertencias, pero no las descifraría. – Gohn67