有关加密的一点点(md5+salt)

博客围绕登录注册的密码加密问题展开。注册时,前端用固定salt值拼接密码并md5加密后传后端,后端再随机生成salt值与密码存入数据库;登录时,前端同样操作,后端从数据库取密码和salt值匹配。还介绍了加盐与不加盐的区别,以及salt值可自行确定。

做个笔记吧,最近毕设项目进展到了登录注册,正好要考虑考虑加密的问题,于是就有了这篇笔记 :)


参考:

whatday - salt盐度与用户密码加密机制


正文

这次正文来得真快。

按照整个流程来说

注册:

  1. 用户填写账号密码,点击注册
  2. 前端使用一个固定的salt值拼接到密码上
  3. 前端使用md5加密拼接后的密码
  4. 把拼接加密后的内容发送给后端
  5. 后端再随机生成一个salt值,再次拼接到密码上
  6. 后端把密码和那个随机生成的salt值都存到数据库里

登录:

  1. 用户提交密码,
  2. 前端使用一个固定的salt值拼接到密码上
  3. 前端使用md5加密拼接后的密码
  4. 把拼接加密后的内容发送给后端
  5. 后端从数据库里取出账号对应的密码 和 注册时生成的salt值
  6. 匹配 数据库中的密码 是否等于 前端传递的密码+salt值

关于加salt 与不加salt的区别

非加盐值MD5等都可以通过大型的密码(如彩虹表)表进行对比解密,所以相对而言相当的轻松,而带有加盐值的密文就相对而言复杂的多,现在的MD5表大概是260+G,如何加盐值的可能性有10000个,那么密码表的应该是MD5 size*10000,就可以解密出原MD5表能够解密的密码了,一些网站也提供了对应的salt解密,但是测试以后效果并不是非常好,如常规的admin888也未解密出,实在是遗憾,毕竟MD5本是不可逆的,带入随机值解密出最终密码的可能性就更低了,至少是相对大多数人而言的。

如何确定salt值

这个就不需要我说了吧,salt值都是可以自己定的。

const salt = 'HappySalt'
复制代码

转载于:https://juejin.im/post/5c8e42fa6fb9a070c022e7d2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值