Yii2密码验证正则表达式



这是Yii2密码哈希验证原始代码的一部分。

if (!preg_match('/^$2[axy]$(dd)$[./0-9A-Za-z]{22}/', $hash, $matches)
|| $matches[1] < 4
|| $matches[1] > 30
) {
throw new InvalidArgumentException('Hash is invalid.');
}

例如密码:12345678
密码哈希:$2y$13$JLD4tBa6KmwkXZFeRB9FufjVTQlmjmQkjwRzAR59/Rp1RK4bF7dO

根据客户要求,对于我的项目,我正在通过sha256对密码进行哈希。
例如密码:12345678
密码哈希:ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f
有人能为我提供哈希验证的正则表达式代码吗?

SHA256哈希为256位长。如果你把它写成十六进制字符串,你可以用1个字符来表示4个比特,所以结果是64char长的字符串,正则表达式可以是这样的:

/[a-fA-F0-9]{64}/

SHA256哈希中没有具有特殊意义的字符。

Btw。SHA256算法不是为加密/哈希密码而设计的,因此以这种方式使用它不是一个好主意。主要问题是,使用这种算法计算哈希值很便宜,这意味着暴力或字典攻击很快就会通过可能的密码。你应该考虑向你的客户解释这一点,并尽可能说服他使用为密码哈希设计的算法。

最新更新