我知道我们有 HTTPS,但我想知道是否存在一种算法/方法/策略可以在不使用 SSL 的情况下提供合理的安全级别。
我在网上读过很多解决方案。
其中大多数都是基于在哈希中添加一些时间元数据,但这需要服务器和客户端的时间设置相同。此外,在我看来,这些解决方案都无法防止中间人攻击。
答案1
如果您真的愿意,您可以在浏览器内部实现相同的非对称加密(当然,假设是 Javascript):
https://www.pidder.com/pidcrypt/?page=demo_rsa-encryption
你给用户一个密钥,自己保留一个密钥。即使有人截获了客户端的密钥,他们也无法解密客户端发回服务器的信息。注意:任何截获用户密钥的人将要能够解密服务器发送给客户端的任何内容 - 因此您需要解决这个问题(例如让客户端生成一个新的密钥对,并发送给您一个,或者确保您永远不会发送任何敏感信息)。您需要小心生成这些密钥对,如果它们完全可预测,那么它们就等于没有安全性。
要了解其工作原理,请查看其维基百科页。