繁体   English   中英

通过Java中的TCP套接字安全地传输密码

[英]Securely transmitting password over TCP Socket in Java

我想在Java中编写一种通过TCP套接字进行身份验证的安全方法。 我已经对该主题进行了广泛的阅读,但我绝不是专家。 关于如何最好地做到这一点,似乎存在一些分歧。

我知道必须生成我的密码哈希,但是如果攻击者在传输过程中可以简单地收集密码/密码哈希,那对我并没有多大好处。 因此,我想创建一种合理安全的方法来发送此数据。

最受欢迎的方法似乎是使用SSL套接字。 但是,我的代码不会用作单个服务器(可能就像在线游戏一样),而是由许多使用者运行许多实例。 我个人没有购买SSL证书的方法,而且我也不能真正要求消费者这样做。 创建自签名证书,然后为每个客户端将其安装在密钥库中似乎既困难又有点不安全。 如果我要处理所有服务器实例,那么这将是一个更可行的选择,因为我只需要一个证书,但就目前而言

因此,我只是在执行登录时简单地保护TCP套接字。 使用Diffie-Hellman算法,我可以做到这一点。 但是,当我对此进行研究时,人们不断说要使用SSL。

如何以有效但可移植的方式通过Java TCP套接字安全地传输密码?

您是否考虑过RSA加密? RSA加密与SSL使用的加密相同:

https://zh.wikipedia.org/wiki/RSA_(密码系统)

您可以使用Diffie-Hellman密钥交换算法 这正是您的用例,用于通过公共网络交换密钥。 请参阅Oracle Diffie-Hellman示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM