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

作个笔记吧,最近毕设项目进展到了登陆注册,正好要考虑考虑加密的问题,因而就有了这篇笔记 :)前端


参考:数据库

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


正文

此次正文来得真快。app

按照整个流程来讲测试

注册:网站

  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本是不可逆的,带入随机值解密出最终密码的可能性就更低了,至少是相对大多数人而言的。spa

如何肯定salt值

这个就不须要我说了吧,salt值都是能够本身定的。.net

const salt = 'HappySalt'
复制代码
相关文章
相关标签/搜索