我一直收到警告:
警告: mcrypt_generic_init():mcrypt_generic_init():1不是C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php第123行第9列中的有效MCrypt资源。 警告: mdecrypt_generic():mdecrypt_generic():1不是C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php中第12行第9列中的有效MCrypt资源。 警告: mcrypt_generic_deinit():mcrypt_generic_deinit():1不是C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php中第12行第9列中的有效MCrypt资源。 警告: mcrypt_generic_init():mcrypt_generic_init():1不是C:\User\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php中第10行第9列中的有效MCrypt资源。 警告: mcrypt_generic():mcrypt_generic():1不是C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php第105行第9列中的有效MCrypt资源。 警告: mcrypt_generic_deinit():mcrypt_generic_deinit():1不是C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php中第107行第9列中的有效MCrypt资源。
因为这是一个警告和字符串“似乎”被加密,我一直忽略它到现在。但是,我使用的远程服务器似乎不喜欢加密的字符串,并将错误返回给我,并声明了同样的错误。
下面是生成这些警告的代码:
mcrypt_generic_init($this->_td, $this->_key, $iv);
$data = mdecrypt_generic($this->_td, $data);
mcrypt_generic_deinit($this->_td);和
$iv = mcrypt_create_iv(self::AES_BLOCK_SIZE, $random_source);
$s = mcrypt_generic_init($this->_td, $this->_key, $iv);
if( ($s < 0) || ($s === false))
die( "Really an error" );
$data = mcrypt_generic($this->_td, $data);
$data = $iv.$data;
mcrypt_generic_deinit($this->_td);我曾经研究过,但却找不出这些警告是什么意思,如果它们正在进行加密/解密,或者问题到底是什么?我很确定这不是代码(因为我让它在另一台服务器上工作)。
发布于 2012-10-25 19:12:19
下面是我执行的一个测试,它复制了您在var_dump中看到的值:
$td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');
var_dump($td);
mcrypt_module_close($td);
var_dump($td);它打印:
resource(4) of type (mcrypt)
resource(4) of type (Unknown)由于您看到的是相同的行为(资源id保持不变,但失去了它的mcrypt关联),所以在初始化$this->_td和实际调用mcrypt_generic_init之间的某个时刻,您似乎正在关闭模块资源。
https://stackoverflow.com/questions/13074371
复制相似问题