开发者社区> 问答> 正文

请教一下各位大神,http中get请求里面携带的password一般采用怎样的方式生成?

我最近在测试一个别人写的APP,APP用户经常投诉说APP报告“密码错误”,但实际输入的密码是正确的,我发现该APP的密码是客户端通过HTTP的get请求送给服务器的,get里面的passsword字段是32位的加密(或者hash)后的字符串,我手里有个username、password和一个随机变量var,我比较感兴趣这个32位字符串一般是怎么生成的?有什么样的算法?谢谢了

展开
收起
杨冬芳 2016-06-23 11:16:39 2215 0
1 条回答
写回答
取消 提交回答
  • IT从业

    客户端算摘要,或使用对称加密都没啥意义。
    如果确实需要加密,需要考虑非对称加密,JavaScript 有 RSA 库。自己写 RSA 加密会比较麻烦,所以可以用明文密码+HTTPS 传输的办法来实现安全。

    不过密码在保存到数据库之前需要计算摘要(Hash),防止拖库窃取密码,常见的是MD5(128位)或者SHA1(160)位,为了不容易被彩虹表破解,通常会加入随机盐(Salt),用 HMAC 算法计算摘要,即 HMAC-MD5 或 HMAC-SHA1,不过这两个算法现在都比较容易破解,可以考虑 HMAC-SHA256 (256位) 或更高位数的摘要算法。如果是在国内做商密应用,应该使用商密办规定的 SM3 算法,但网上不容易找到可信的纯软件实现。

    2019-07-17 19:46:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里巴巴HTTP 2.0实践及无线通信协议的演进之路 立即下载
CDN助力企业网站进入HTTPS时代 立即下载
低代码开发师(初级)实战教程 立即下载