c# - 在客户端-服务器环境中使用 AES 加密

标签 c# network-programming cryptography aes

我目前正在开发客户端-服务器应用程序。我有一些数据想要在客户端加密并在服务器端解密。

我已经弄清楚了加密/解密部分并正在工作。我的问题是 key 和盐。它们都是在运行时随机生成的,然后通过网络发送到服务器。

我的问题是:

  • 如果 key 和盐是随机的,如何让服务器解密数据?

我当前的解决方案是发送 key 和带有加密数据的盐。

  • 但这是否会抵消我保护数据安全的努力?
  • 我应该“隐藏”数据中的 key 和盐吗? (附加在末尾/开头)

Client server AES encryption

该帖子上的人建议联系服务器,让他知道我们想要发送安全消息。然后他生成一个 key 并将其发送回给您。对于您希望所有内容都尽可能齐全的游戏网络来说,这不是有点“太多”了吗?

通常会做什么?

谢谢。

最佳答案

看起来您不小心绊倒并滚动了自己的加密货币。呃哦。不过不用担心,只要振作起来,删除所有加密代码,然后使用 SSLStream .

为什么?

  1. TLS 是人们多年工作、研究和分析的结果,这些人在加密方面的能力比你我加起来的水平高出十亿倍

  2. 这比编写自己的自定义解决方案更快、更轻松。如果您不使用 AES 的身份验证模式,则需要实现 Diffie-Hellman、RSA/DSA 签名、AES、一个或两个 HMAC 的组合,最重要的是,您需要注意填充预言机、前向保密和一大堆其他东西。

抛开笑话不谈,你永远不应该推出自己的加密货币。依靠经过考验的技术。

关于c# - 在客户端-服务器环境中使用 AES 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40252289/

相关文章:

c# - 来自引用的 .NET Standard 项目的多个 DLL

c# - 用户在网站中触发一个漫长的过程

Java:NetworkInterface.getName() 是一个不会随时间变化的唯一标识符吗?

c# - 将signingCertificateV2属性添加到SignedCms

c# - ASP.NET 2.0 站点中的 ASP.NET 4.0 应用程序能否使用相同的表单例份验证 cookie?

c# - VssUnauthorizedException VS30063 You are not authorized to access 突然抛出错误

java - getPeerCertificates() 可以无限期或长时间阻塞吗?

c++ - 上下文无关的 C++ TCP 服务器类

java - 用于 PBEWITHSHA256AND256BITAES-CBC-BC 的 BouncyCaSTLe 轻量级 API 等价物

algorithm - 如何比较两个对象并确定它们的相等分数