PHP mcrypt和重定向错误/问题

时间:2012-01-05 02:46:41

标签: php encryption web header

我有两个问题。

1)我在使用mcrypt解密信息时遇到问题。

加密代码:

$username = mcrypt_ecb(MCRYPT_SAFER128, "*password*", $username, MCRYPT_ENCRYPT);
$password = mcrypt_ecb(MCRYPT_SAFER128, "*password*", $password, MCRYPT_ENCRYPT);
echo "
<script type=\"text/javascript\">
<!--
document.cookie = 'username=$username; expires=0; path=/'
document.cookie = 'password=$password; expires=0; path=/'
//-->
</script>
";

这似乎工作正常。我检查了我的浏览器中的cookie(没有mcrypt语句)有用户名和密码,看起来像乱码。我用它来解密:

$username = $_COOKIE['username'];
$password = $_COOKIE['password'];
$username = mcrypt_ecb(MCRYPT_SAFER128, "*password*", $username, MCRYPT_DECRYPT);
$password = mcrypt_ecb(MCRYPT_SAFER128, "*password*", $password, MCRYPT_DECRYPT);

得到了这个错误:

警告:mcrypt_cbc()[function.mcrypt-cbc]:第14行*文件路径*中的模块初始化失败

2)我正在尝试使用php进行重定向。我使用的是javascript,但用户可以关闭它,然后重定向将无法正常工作。所以我使用了以下内容:

header('Location: *URL*');

我收到此错误:

警告:无法修改标题信息 - 第31行*文件路径*中已经发送的标题(在*文件路径和行号*处开始输出)

我试过这个搜索过,很多人似乎都遇到了这个问题,但我似乎无法让它发挥作用。我上面有任何HTML代码的PHP代码,但我仍然遇到问题。

1 个答案:

答案 0 :(得分:1)

1。)mcrypt_ecb的输出不是字符串安全的。 base64-在加密后对其进行编码并在解密之前对其进行解码

2。)标题必须在任何其他文本之前发送 - 这意味着不仅没有“echo”,“print *”等,而且文件中的标记之外也没有文本。常见错误是.php文件开头的空格或BOM标记