即使服务器只存储f(p),客户端也必须将p以clear形式发送给服务器进行身份验证。如果对手正在监视,它就会学习p。通常你必须使用HTTPS来解决这个问题。爱丽丝有另一个想法。而不是客户端发送p,客户端将只发送f(p)到服务器进行认证。那么即使对手可以看到整个通信,它也不会学到p。这是个好主意吗?它是否提高了系统的安全性?
不是一个好的方法。f(p)本质上可以被破解,通过暴力枚举来计算出p。使用HTTPS,通过加密整个通信来防止对手看到敏感数据,是更好的方法。在发送数据前对它进行加密,保证了传输数据的安全性。
回答:这里,我理解p指的是密码,f(p)是对密码进行加密类的操作。实际上https已经比较安全了,采用非对称加密的形式保证了你的数据被别人看到了别人也没办法看到原文。你如果自己设计一个类似https的加密方式来保证你的密码的安全性;可以先在客户端进行采用公钥加密,然后再发送,然后对方接受到之后用私钥解密,可以读出原文;而别人截取到这段数据,也没有办法获取原文,相对还是蛮安全的。不过需要注意的是,RSA(非对称加密)采用的是大数分解为两个质数的乘积的形式比较难进行反推理,这里你选取的大数和两个质因数就需要你自己设计了