注册与登录的加密算法

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-08 10:22:43

算法目的

  • 提供固定的 秘钥明文 能够产生不同的密文摘要
  • hamc 算法 大概流程是 使用一个秘钥 对明文进行两次散列操作得到密文摘要
  • 哈希(散列)函数
    • MD5
    • SHA1
    • SHA256

注册

  • 向服务器请求一个随机的秘钥
  • 把注册的密码进行 md5.hmac(hamc使用md5的散列函数来操作字符)加密 : md5.hmac(key,message) ==> 密文摘要(key : 秘钥 , message : 明文) : md5.hmac密文摘要
  • 把摘要提交到服务器,同时服务器把 该 秘钥md5.hmac密文摘要 持久化到数据库

登录

  • 客户端向服务器请求秘钥(注册时候存储的秘钥)

  • 在用户提交数据的时候对密码进行加密 :
    md5.hmac(key , pwd) ==> 子摘要
    md5.hamc(key , (子摘要 + '当前提交时间')) ==> 总摘要

  • 当服务器接收到总摘要消息的时候处理流程 :
    • 取出 秘钥 key , 存储的密文摘要 pwdDigest
    • 根据以下公式计算两段密文摘要 :
    md5.hamc(key , '当前提交时间' + pwdDigest) ==>目的摘要1
    md5.hamc(key , '当前提交时间 + 1(分钟)' + pwdDigest) ==>目的摘要2
    
    • 如果用户提交的 总摘要 == 目的摘要1 || 总摘要 == 目的摘要2 为密码正确

这样做的好处

  • 注册只有一次, 提交 关键摘要 的操作只有一次,因此受到拦截数据的几率很少

  • 在登录的时候,由于加密使用了系统时间,因此这样可以保证密码摘要的动态性,而且服务器只会辨认一分钟以内的密文摘要,这样做,就算用户提交数据给拦截了,也很少有时间提供给黑客达到模仿正确登录请求

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!