任何人都知道一些处理TCP服务器加密的好方法
本文关键字:加密 服务器 方法 TCP 处理 任何人 | 更新日期: 2023-09-27 18:28:49
我是一个业余程序员(没有受过教育)。我在C#NET 4.6中写了一个TCP服务器,它可以接受多个客户端,它工作得很好,可以像我希望的那样工作。但是,我想在服务器和客户端之间发送字节[]之前加密一些字节[]。
我已经考虑过几种方法(但我真的需要一些帮助):
- 在服务器和客户端的源代码中具有AES加密密钥。(但随后可以反编译程序exe)
- 服务器为每个连接的客户端生成一个新的加密密钥,并将未加密的密钥直接发送给客户端。(但加密密钥是在互联网上不受保护地发送的,我不知道这是否是一个好方法)
- 每天都有一个基于日期的新加密密钥(但这可能会在不同的时区造成麻烦)
我想尽量保持服务器和客户端之间通过互联网发送的数据尽可能安全:)
我不需要任何代码方面的帮助,我只需要一个聪明的想法
感谢您的帮助
答案:感谢您的回复,我阅读了所有的文章,现在我意识到密码学远远超出了我的能力范围,我不会碰它。我只会构建我的tcp服务器,这样就没有什么可隐瞒的了。
加密非常难。你可以很容易地犯一些非常非常难看到的错误。拥有称职和知识渊博的程序员的大公司犯了一些简单的错误,破坏了他们的加密。
如果您希望尽可能保证数据的安全,请使用经过良好测试的加密库,该库可提供所需的功能。
在这一点上,如果你只是想通过编程了解更多信息,而不是非常安全,你可以使用一种称为公钥加密的不同类型的加密来分发会话密钥。
服务器将具有仅存在于服务器上的私钥。相应的公钥将包含在所有客户端中。只有服务器才能读取使用公钥加密的消息。
客户端启动时将生成一个新的AES加密密钥。它将使用公钥加密将其发送到服务器。然后他们都会知道客户端想出了什么密钥,从那时起他们就可以使用AES进行通信。