gpt4 book ai didi

java - 在 Windows、C++ 和 Java 中加密传输中的数据

转载 作者:行者123 更新时间:2023-12-02 01:05:29 24 4
gpt4 key购买 nike

我需要对我们的客户端/服务器应用程序的“传输中的数据”进行加密。我们的服务器是用 C++ 编写的,在 Windows 上运行。我们的客户使用 Windows 上的 C++ 和 Java。我们使用 TCP/IP 进行通信,直接调用常用的 Winsock API,如连接、发送、绑定(bind)等,并且使用我们自己的端口号(都不是 80 或 443)。当然,Java 客户端代码会进行标准 Java TCP/IP 网络调用来与 Windows 服务器进行通信。我仍处于调查的早期阶段,我正在尝试了解所有困惑的技术、协议(protocol)、密码等。我发现这篇文章看起来很棒:[ https://www.codeproject.com/Articles/1000189/A-Working-TCP-Client-and-Server-With-SSL][1]本文标题是 SSL,但实际上使用的是 TLS 1.2。看来 TLS 1.2 对我们来说是一个非常好的解决方案,而且看起来应该很容易将这些加密调用添加到我们的代码中。

所以,我的问题是:TLS 是正确的选择吗?或者,是否有其他更适合的技术?我不想忽略任何更简单的事情,例如:“哦,只要打开此设置,您的所有通信都将被加密”。意思是:如果让 Windows 为我们完成所有工作就好了。我认为第 3 方 VPN 不适合我们,因为我们想要完全控制,并且客户不想信任第 3 方拥有他们的敏感数据。该解决方案还需要与用 Java 编写的客户端配合使用。快速谷歌搜索一下:Java 支持 TLS,它应该能够与我们的 C++ Windows 服务器协商通信,对吗?我知道有 HTTPS,但由于我们使用自己的端口号直接调用 Winsock API,因此 HTTPS 似乎不适合我们,对吗?我还读过有关 OpenSSL 的内容,但由于它是一个 C 库,因此它似乎不适合 Java,对吗?

身份验证:由于我们本质上是一个封闭的系统(我们拥有客户端和服务器),我认为我们只会在服务器上放置一个证书,并且只有客户端才会对服务器进行身份验证。我不想在客户端添加证书。

我最关心的问题之一就是把这件事做好。我的理解是,安全性可能非常棘手,您不想重新发明轮子。因此,我更倾向于使用一些适用于 C++ 和 Java 的成熟技术,这些技术很容易添加到我们的代码中,并提供必要的加密。

最佳答案

如果您确保应用程序的所有网络通信均使用 TLS,特别是如果您使用数字证书(可用但经常不使用) ,那么您的加密要求将得到满足。应用程序无需进一步加密其通信,因为隧道本身是安全的。

我强烈建议在两端使用证书。证书允许双方安全地相互识别,它们可以单独撤销,并且不能被欺骗。

另一个值得考虑的可能性是 VPN,特别是 OpenVPN。

关于java - 在 Windows、C++ 和 Java 中加密传输中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60099918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com