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

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

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


有加密函数,例如md5(),直接把需要加密的字符串放里就生成了


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

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

【热门文章】
【热门文章】