我试图遵循this paper(默多克硬化无状态会话Cookie)来实现salting机制。以下伪代码描述的代码:如何正确解释哈希方案的递归伪代码
a[0](salt, password) = H(salt||password) a[x](salt, password) = H(a[x−1](salt, password)||password)
H:加密安全散列函数
X:哈希迭代计数
一个:验证器
盐:每账号,密码安全伪随机数约128位
密码:明文用户pw
我不知道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)
会很高兴,如果有人可以帮助我的语义和句法解释这张纸。
所以基本上你正在尝试创建一个盐渍散列。为了做到这一点,您只需将表单中获得的密码与安全随机生成的盐串联起来即可。背后的主要思想是为相同的密码设置不同的哈希值。如果您是初学者,请注意这一点,因为这很容易导致错误:https://www.youtube.com/watch?v=8ZtInClXe1Q –
我想我知道一般密码存储问题。我的问题是,如果在这种特殊情况下的腌制是通过按位或操作或经典追加添加的。更一般的是,如何正确读取纸张的伪代码。 – user3657114
我的问题中没有看到任何'$ varOne,$ varTwo'?那些定义在哪里? 'a [n]'源自哪里? –