我的代码示例有问题,结果是空白页面。我在php中检查了mcrypt_ecb函数,并且可用。那为什么我只得到空的结果呢?
$suma='9990';
$idobj='38';
$cislooz='TEST';
$input=$suma.$idobj.$cislooz;
$key='KEY';
$encrypted_text = mcrypt_ecb(MCRYPT_3DES, $key, substr(sha1($input),0,8), MCRYPT_ENCRYPT,substr(sha1($input),0,8));
echo "<b>INPUT: </b>".$input."<br>";
echo "<b>KEY: </b>".$key."<br>";
echo "<b>Hash sha1: </b>".substr(sha1($input),0,8)."<br>";
echo "<b>Hash to 3DES/ECB/NoPadding:</b> ".( $encrypted_text )."<br>";
echo "<b>to HEX:</b> ".StrToUpper(bin2hex($encrypted_text))."<hr>";
?>
答案 0 :(得分:4)
您可能在某处遇到问题。我在PHP 5.3.0上测试了它并输出:
INPUT: 999038TEST
KEY: KEY
Hash sha1: c063a3be
Hash to 3DES/ECB/NoPadding: K\Aj¥íµÉ
to HEX: 4B5C416AA5EDB5C9
您可能触发了PHP错误,但知道这一点的唯一方法是设置:
error_reporting(E_ALL);
ini_set('display_errors',1);
在脚本的顶部,以便您能够看到错误是什么。
另一个解释是您使用ob_start()
启动了一个输出缓冲区,并且可能管理错误。
或者你可以在某个地方exit;
或die();
。
正如您所看到的,您的问题可能会有很多“因为”。
修改强>: 最后,我们终于发现了真正的问题。他的代码中的空格转换为错误的不可见字符;那是因为它是从PDF中复制的。
在这里你可以看到:第一行工作正常,空间对应于脚本中的.
。另一个符号(绿色注释)引起了问题。