具有旧密码验证的顺序(连续)新密码

时间:2015-12-27 15:08:53

标签: php

如果要更改新密码,如何验证顺序字符串/ int? 例如:

old pass: mypassword1
new pass: mypassword2

然后它将返回false,但如果它是这样的

old pass: mypassword1
new pass: mypassword3

然后它将返回true。

我只尝试使用regEx方法获取新密码。

提前致谢。

2 个答案:

答案 0 :(得分:1)

由于您正在处理密码,因此您无法与之前的密码进行比较(它应该安全地进行哈希处理,因此不可逆转)。 PHP有一些关于in the documentation主题的优秀阅读材料。

作为替代方案,您可以生成密码的变体,这些密码可能会破坏您的验证规则,然后查看它们是否匹配。

让我们假设您正在使用密码功能:

$hash = password_hash($password, PASSWORD_DEFAULT);
// AND....
password_verify($password, $hash);

变化可能如下:

$pwd = 'word1';
$num = substr($pwd,-1);
$invalid = false;
$phrase = substr($pwd, 0, -1);
foreach([$num++, $num--] as $variation) {
    if(password_verify($phrase.$variation, $hash)) {
        // password matches, the user is just incrementing the digit.
        $invalid = true;
    }
}

因此,如果$invalid为真,则密码会破坏您的验证规则。

这是一种傻瓜证明方法。它与您生成无效密码变体的能力一样好。

答案 1 :(得分:1)

试试这个:

label3.Text = dr.GetString(0);