0

我一直在尝试了解我正在从事的项目的密码加盐和散列。从对上一个问题的回答中,我看到了password_hash的 php 手册是一个很好的开始方式。

但是,在尝试该页面上的代码时,我收到一个我无法解决的错误。
代码:

<?php
/**
 * Note that the salt here is randomly generated.
 * Never use a static salt or one that is not randomly generated.
 *
 * For the VAST majority of use-cases, let password_hash generate the salt randomly for you
 */
$options = [
'cost' => 11,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
?>

错误:

解析错误:语法错误,第 8 行 /home/content/##/######/html/TESTINGFOLDER/HashNSalt.php 中的意外 '['

根据手册 -

The above example will output:
$2y$11$q5MkhSBtlsJcNEVsYh64a.aCluzHnGog7TQAKVmQwO9C8xb.t89F.

8号线是

 $options = [

这里有人可以解释为什么我会收到此错误 - 特别是因为我已将其从 PHP 手册本身复制并粘贴到我的测试页面中?我仍处于学习身份验证/ php 等的早期阶段,并且依靠手册、stackexchange/overflow 来了解为什么事情不能按应有的方式工作。当我在手册中找到的代码不能按应有的方式工作时,我完全被难住了!

4

1 回答 1

3

不是安全问题,只是语法问题。

短数组语法:

$options = [ ... ];

是 PHP 5.4 的一个特性……以前你不得不说array( ... )

您可能没有安装 5.4。作为password_hashPHP 5.5 功能,您需要更新您的 PHP 版本。

于 2013-07-31T11:18:04.583 回答