【发布时间】:2015-09-25 14:04:25
【问题描述】:
我尝试关注this paper(Murdoch 的 Hardened Stateless Session Cookies)来实现加盐机制。下面的伪代码描述了代码:
a[0](salt, password ) = H(salt||password ) a[x](salt, password ) = H(a[x−1](salt, password )||password )H:加密安全散列函数
x:哈希迭代次数
a: 身份验证器
salt:每个帐户,大约 128 位的加密安全伪随机数
密码:明文用户密码
我想知道php实现是否应该如下:
$a0 = hash('sha256', $salt | $password);
$auth = recursiveHash($a0, $password, 256)
function recursiveHash($salt, $password, $counter) {
if ($counter === 0) {
return hash('sha256', $salt | $password);
} else {
$counter--;
return $this->recursiveHash(hash('sha256', $salt | $password), $password, $counter);
}
}
总的来说:我确实对准确的句法解释感到困惑。 $varOne, $varTwo 是什么意思?是上次函数调用的结果吗?是一个||按位或运算符?为什么不是一个|?以下是什么意思:
c = a[n](salt, password )
是否与以下相同(当 n == x 时):
a[x](salt, password ) = H(a[x−1](salt, password )||password )
如果有人能帮助我解释本文的语义和句法,我将非常高兴。
【问题讨论】:
-
所以基本上你正在尝试创建一个加盐哈希。为此,您只需将从表单中获得的密码与安全随机生成的盐连接起来。背后的主要思想是为相同的密码设置不同的哈希值。如果您是这类东西的初学者,请小心,因为很容易出错:youtube.com/watch?v=8ZtInClXe1Q
-
我想我一般都知道密码存储问题。我的问题是,如果这种特殊情况下的加盐是通过按位或运算或经典附加来添加的。更一般地说,如何准确阅读论文的伪代码。
-
我在您的问题中没有看到任何
$varOne, $varTwo?那些定义在哪里?a[n]来自哪里?
标签: php hash syntax cryptography