對於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()
來解決這個問題,但我想知道如何解決這個問題。
謝謝。