问题描述
我正在尝试实施用户友好密码系统,在该系统中,如果用户输入的原始密码多了一个字符,我希望将其标记为有效登录名。
注意:“ password”具有密码字符串。 “哈希”是从中生成的哈希。
let p = 131,valM=Math.pow(10,9)+7
for(let i=0;i<password.length;i++){
let charCode = password.charCodeAt(i)
//console.log(password[i],charCode)
hash += charCode*(Math.pow(p,password.length-(i+1)))
}
hash %= valM
现在我想以某种方式从哈希值“ hash”取回密码字符串“ password”。
感谢您可以提供的任何帮助。期待获得专家的指导和支持以了解这一点。
解决方法
从哈希中检索密码是不可能的。最简单的方法是从鸽洞原理中得出。
由于JavaScript中的数字是IEEE的双精度,因此哈希最多可以有2 ^ 64个值。但是,可能的密码远远超过2 ^ 64个-实际上,密码无限多。因此,没有函数从哈希集H到密码集合P是排斥的。换句话说,从H到P没有函数f使得每个密码p∈P,哈希值h满足f(h)= p。