【问题标题】:Simple client/server, TCP/IP encrypting the message stream, SSL (C++)简单的客户端/服务器,TCP/IP 加密消息流,SSL (C++)
【发布时间】:2009-08-21 15:30:51
【问题描述】:

基本上我的问题和这个完全一样:

Simple client/server, TCP/IP encrypting the message stream, SSL

不同之处在于我需要它用于纯 C++,而不是 .NET。我不能使用第 3 方库,所以除非它是一个 Windows 系统组件(如上),否则我需要一些有源代码的东西,这样我才能得到通用的想法并自己构建它。

谢谢:)

引用另一个问题以供参考:

"编写一个小的 TCP/IP 客户端服务器 应用程序。基本上它创建了一个服务器, 然后你可以创建几个 不同的客户并设置了一些 聊天会话。我想知道的是 有任何方法可以合并,使用 标准 .net 库的某种形式 加密?

m_mainSocket = 新 套接字(地址家庭。互联网, SocketType.Stream, ProtocolType.Tcp);

有什么方法可以指定 tcp 使用 rsa 吗?

或者你(我就是)必须 编写一些自定义库来做关键 交换然后加密 后续聊天消息?我已经做好了 以前是大学的,但那是在 java 但我知道这并不难 转换它们。只是想没有 重新发明轮子...

或者使用 ssl 怎么样?

谢谢,罗恩。”

【问题讨论】:

  • 您好,感谢您的回答。当我说“自己实现”时,我的意思是使用 SSPI。这看起来很简单,但我怀疑这可能会产生误导,我不想犯任何愚蠢的错误,从而使解决方案容易受到攻击。它实际上有 5-10 年历史的代码具有这个新的安全要求,仅供参考。

标签: c++ ssl sspi


【解决方案1】:

您是否考虑过使用 ASIO 库? think-async dot com/Asio/

有一个专门针对基于 SSL 的客户端/服务器的示例。 http://think-async.com/Asio/asio-1.4.1/doc/asio/examples.html#asio.examples.ssl

它就像你能得到的那样“纯 c++”。

【讨论】:

    【解决方案2】:

    您可以随时查看OpenSSL,它是开源的,但这就像您自己实现 SSL。我建议包装 OpenSSL 并使用它。或者使用 OpenSSL 中提供的 SSL 隧道应用程序。

    【讨论】:

      【解决方案3】:

      “不建议”编写您自己的加密代码。使用其中一个库时很容易犯一个简单的错误,更不用说尝试自己编写一个了。

      您真正想要使用的是带有 Boost.ASIO 的 OpenSSL。如果您不能这样做,那么您的下一个最佳选择是使用 Internet Explorer COM 对象。这不是很灵活,但根据您的确切需求可能会很好。您还可以探索 Win32 API。最后我发现没有足够的加密 API 广泛可用来执行此操作。处理此问题的最后一种方法是包装 .NET API,以便您可以在本机 C++ 中使用它们。

      只有当这些都不适合你时,你才应该考虑自己写这个。你会犯错误,结果你的应用程序会变得不那么安全。因此,在您开始尝试编写自己的加密代码之前,您还可以尝试查看通过 SSH 建立 SOCKS 隧道并使用其他人的 SSH 实现。我接下来要看的是购买代码而不是自己编写代码。代码不会像开源​​产品那样好,因为它使用较少,因此会有更多的安全问题,但它仍然比你在第一次外出时写的任何东西都要好。

      只有在你用尽了所有这些选项后,你才应该考虑自己写这篇文章。考虑过之后,您应该再次尝试所有其他选项,以确保您不会错过让其中一个第一次为您工作的机会。

      如果您仍然编写自己的实现,那么在将其投入生产使用之前将其丢弃并使用其他选项之一,因为在您可能不会打扰的程度上会出现损害安全性的错误。

      很抱歉,这一切都被贬低了,但把这些事情做好真的很难,而且不是你可以通过快速查看其他人的实现来做到的。

      【讨论】:

      • 谢谢。我仍在尝试在这里找到最佳解决方案,但是您所说的听起来很合理。也感谢其他两位贡献者。
      猜你喜欢
      • 2010-10-30
      • 2011-11-16
      • 2015-12-29
      • 2014-09-08
      • 2017-08-04
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-07
      相关资源
      最近更新 更多