欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-11 10:30:26
...

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


参考:

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