【发布时间】:2013-08-20 18:51:09
【问题描述】:
对于 API 测试套件,我使用以下代码来加密保存用户密码:
$encryptionKey = sha1(microtime(true) . mt_rand(PHP_INT_MAX / 10, PHP_INT_MAX));
setcookie('key', $encryptionKey, 0);
$_SESSION['username'] = $_POST['username'];
$_SESSION['encryptedPassword'] = mcrypt_encrypt(MCRYPT_BLOWFISH, $encryptionKey, $_POST['password'], MCRYPT_MODE_ECB);
要找回密码,我使用以下代码:
$password = mcrypt_decrypt(MCRYPT_BLOWFISH, $_COOKIE['key'], $_SESSION['encryptedPassword'], MCRYPT_MODE_ECB);
似乎有时五个空字节会附加到存储的值中。因此,var_dump($password) 返回以下内容:
string(8) "123"
var_export($password) 返回以下内容:
'123' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . ''
请注意,我们看到 三个 字符,但 var_dump() 坚持认为有 八个。现在我正在使用trim() 来解决这个问题,但我想知道如何解决这个问题。
谢谢。
【问题讨论】:
标签: php session cookies null mcrypt