我想在Java中使用TCP套接字编写一种安全的身份验证方法。我已经在这个问题上进行了相当广泛的阅读,但我绝不是专家。关于如何做得最好,似乎存在一些差异。
我非常清楚必须生成我的密码哈希值,但如果攻击者可以在传输过程中简单地收集密码/密码哈希值,那么这对我没什么好处。所以我想创建一种相当安全的方法来发送这些数据。
最流行的方法似乎是使用SSL套接字。但是,我的代码不会被用作单个服务器(可能是在线游戏),而是由各种消费者运行的许多实例。我个人没有办法购买SSL证书,我也不能让我的消费者这样做。创建自签名证书然后在每个客户端的密钥库中安装它们似乎既困难又有点不安全。如果我正在处理所有服务器实例,这将是一个更可行的选择,因为我只需要一个证书,但现在就是
所以我在执行登录时只是保护TCP套接字。我可以使用Diffie-Hellman算法很好地完成这项工作。但是,正如我研究的那样,人们一直在说使用SSL代替。
如何以高效但便携的方式通过Java TCP套接字安全地传输密码?
答案 0 :(得分:-2)
您是否考虑过RSA加密? RSA加密与SSL使用的加密相同:
答案 1 :(得分:-2)
您可以使用Diffie-Hellman key exchange algorithm。这完全适合您的用例,通过公共网络交换密钥。请参阅Oracle Diffie-Hellman example。