bcrypt加密

背景

某YAPI使用的数据库存在未授权访问,在Mongodb中发现疑似账户和密码的信息,尝试新增管理员权限用户实现登录YAPI管理台。

形式

加密字符串如下

$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

posted @ 2020-12-08 16:40  歇马  阅读(337)  评论(0编辑  收藏  举报