bcrypt浅析

形式

加密字符串如下

$2b$10$Y2Fxxxxxn/uxxxx/TXxxxx

搜了一下 是bcrypt加密,这种加密算法一般用于nodejs中。发现的加密字符串是放在mongoDB中

加密原理

每次加密都会加入一个随机的salt 即每次加密的结果都会不一样
且bcrypt不需要存储salt
每次明文字符串myPassword过来,就通过10次循环加盐salt加密后得到myHash, 然后拼接BCrypt版本号+salt盐+myHash等到最终的bcrypt密码 ,存入数据库中。

问题来了,为啥不需要存salt?
bcrypt加密后会将salt存储在密文中,所以我们也不用保存salt
利用这个salt进行哈希(不可逆),因此验证的时候也是验证加密之后的结果

格式如下LINK

$2a指的是算法版本
$10 迭代次数为2的10次方
w.q1lRps.9cGLcZEiGDMVr5yUP1KUOYTa
前22个字符为base64后的salt值,其余为利用salt生成的哈希

https://www.jianshu.com/p/2b131bfc2f10?utm_campaign

原文地址:https://www.cnblogs.com/rookieDanny/p/14103439.html