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生成的哈希
Minds overflow