bcrypt.js比较方法如何知道加盐次数?

问题描述 投票:0回答:2

作为bcrypt documentation地址,为了将散列与纯文本进行比较,我们必须像下面这样实现compare函数:

bcrypt.compare(myPlaintextPassword, hash).then(function(result) { //do stuff });

但是似乎无法告诉函数该轮加盐。函数如何获取该数字?

javascript node.js hash bcrypt
2个回答
2
投票

bcrypt输出看起来像这样:$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy它指定成本参数10,表示2 ^ 10个密钥扩展回合。盐是N9qo8uLOickgx2ZMRZoMye,密码哈希是IjZAgcfl7p92ldGxad68LJZdL17lhWy

因此所有需要的信息都输入到hash参数中。


0
投票

阴影中的哈希字符串中的前缀“ $ 2a $”或“ $ 2b $”(或“ $ 2y $”)密码文件指示哈希字符串是模块化中的bcrypt哈希地穴格式。哈希字符串的其余部分包括费用参数,128位盐(Radix-64编码为22个字符)和184散列值的位(基数为64的基数编码为31Radix-64编码使用unix / crypt字母,并且不是“标准” Base-64。 cost参数指定一个密钥扩展迭代计数为2的幂,是对地穴算法。

例如,影子密码记录$ 2a $ 10 $ N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy指定成本参数10,表示2 ^ 10个密钥扩展回合。盐是N9qo8uLOickgx2ZMRZoMye,结果哈希为IjZAgcfl7p92ldGxad68LJZdL17lhWy。按照标准惯例,密码本身未存储。

这里有一个完整的维基百科条目:https://en.wikipedia.org/wiki/Bcrypt

© www.soinside.com 2019 - 2024. All rights reserved.