如何在C#中加密要传输的文件?

如何在C#中加密要传输的文件?,c#,C#,我试图在将文件保存到磁盘时对其进行加密,我查看了C#中的加密名称空间,但不确定该如何进行加密。基本上,我需要我的程序能够同时加密和解密文件。该文件只是一个由我的程序序列化的xml文件,但它可以包含敏感数据,如SQL Server的连接字符串。我的客户希望能够通过电子邮件将这些配置文件发送给其他人,并在我们的应用程序中打开它们,以便将设置应用到他们的系统中 我尝试了加密名称空间中的AES类,但我不知道将IV和密钥存储在何处,以便我的程序在另一台机器上能够对其进行解密。在典型场景中,处理类似内容的流

我试图在将文件保存到磁盘时对其进行加密,我查看了C#中的加密名称空间,但不确定该如何进行加密。基本上,我需要我的程序能够同时加密和解密文件。该文件只是一个由我的程序序列化的xml文件,但它可以包含敏感数据,如SQL Server的连接字符串。我的客户希望能够通过电子邮件将这些配置文件发送给其他人,并在我们的应用程序中打开它们,以便将设置应用到他们的系统中


我尝试了加密名称空间中的AES类,但我不知道将IV和密钥存储在何处,以便我的程序在另一台机器上能够对其进行解密。

在典型场景中,处理类似内容的流程如下所示:

  • IV是静态的,客户知道
  • 终端机器生成一个RSA密钥对,并仅向发送数据的一方(XML文件)提供公钥
  • 您的AES密钥已生成,并使用RSA公钥加密并发送到客户端,现在只有客户端能够使用先前生成的私钥获取AES密钥
  • 使用先前安全发送到客户端的AES密钥加密数据

这意味着,即使有人捕获了完整的数据流,他们也无法解密您的数据,因为他们没有获取AES密钥所需的私钥。

+1用于使用公钥加密来保护AES密钥。不过,一个缺点是,recepient从不验证这些设置的生成器。