Open main menu
首页
专栏
课程
分类
归档
Chat
Sci-Hub
谷歌学术
Libgen
GitHub镜像
登录/注册
搜索
搜索
关闭
Previous
Previous
Next
Next
## 1.介绍 韭菜本来是php程序猿一枚,以前写laravel的时候,感觉laravel中的密码加密很神奇,相同的密码,加密出来的结果不一样,但是密码比对的时候确实一样的,非常好奇,然后研究了一番laravel的密码加密方式,发现采用的加密方式是bcrypt,于是去google了一波。 bcrypt是单向Hash加密算法,类似Pbkdf2算法 不可反向破解生成明文。 ## 2.Bcrypt是怎么加密的? bcrypt有四个变量: 1. saltRounds: 正数,代表hash杂凑次数,数值越高越安全,默认10次。 2. myPassword: 明文密码字符串。 3. salt: 盐,一个128bits随机字符串,22字符 4. myHash: 经过明文密码password和盐salt进行hash,个人的理解是默认10次下 ,循环加盐hash10次,得到myHash 每次明文字符串myPassword过来,就通过10次循环加盐salt加密后得到myHash, 然后拼接BCrypt版本号+salt盐+myHash等到最终的bcrypt密码 ,存入数据库中。 这样同一个密码,每次登录都可以根据自省业务需要生成不同的myHash, myHash中包含了版本和salt,存入数据库。 即使黑客得到了bcrypt密码,他也无法转换明文,因为之前说了bcrypt是`单向hash算法`; ## 3.如何验证密码的? bcrypt校验时,从myHash中取出salt,salt跟password进行hash;得到的结果跟保存在DB中的hash进行比对。
登录查看更多内容
【Gin实战系列】实例:密码加密
作者
sockstack
许可协议
CC BY 4.0
发布于
2023-09-02
修改于
2023-09-02
尚未登录
登录 / 注册
专栏目录
【Gin实战系列】快速入门
【Gin实战系列】项目结构
【Gin实战系列】项目配置
【Gin实战系列】控制器于路由
【Gin实战系列】请求参数处理
【Gin实战系列】校验错误信息
【Gin实战系列】服务编写
【Gin实战系列】模型定义
【Gin实战系列】数据库操作
【Gin实战系列】请求响应处理
【Gin实战系列】统一结构响应处理
【Gin实战系列】中间件使用
【Gin实战系列】日志使用
【Gin实战系列】cookie处理
【Gin实战系列】session处理
【Gin实战系列】模板渲染
【Gin实战系列】实例:密码加密
【Gin实战系列】实例:登录注册
【Gin实战系列】jwt身份认证
【Gin实战系列】使用 swagger 文档
【Gin实战系列】实例:文件上传