【发布时间】:2015-12-03 13:21:27
【问题描述】:
多年来,我一直在我的 php 应用程序中大量使用 mcrypt,无论是在 win/IIS 上还是在 linux 上。虽然我在我的 linux 服务器上运行 PHP 5.4.28,但我刚刚在我的 windows 8.1 IIS 机器上升级到 PHP 5.6.11。并且 mcrypt 不再有效。它不会抛出任何我能看到的错误;它只是行不通。这是我的加密功能:
function Encrypt($text){
global $salt;
if($text != "")
return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
else
return "";
}
这在我的 linux 服务器上运行良好,但在我的本地 windows 框中返回空白。根据我的阅读,mcrypt 内置于 windows 的 php 5.6 中,因此不应该摆弄扩展名或 ini 文件。
我错过了什么?
【问题讨论】:
-
mcrypt 不使用
/dev/urandom? -
在 Windows 8 上使用 PHP 5.6.12 测试,它可以工作......它不能像你的
$text是空的那么简单吗?试过var_dump($text)? -
我希望你意识到
Encrypt函数是多么不安全。 -
请注意,通过将所有调用链接在一起,您失去了调试能力,无法找到错误发生的位置。它也更难重新阅读和理解。您还将各种操作混为一谈。考虑使用具有短期变量的多个语句。编写前端开发人员阅读、理解和调试。
标签: php iis encryption mcrypt encryption-symmetric