如何在C#中加密文件以进行传输?

时间:2012-08-29 14:41:48

标签: c#

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

我在Crypto名称空间中尝试了AES类,但我不知道在哪里存储IV和密钥,以便我在另一台机器上的程序能够解密它。

1 个答案:

答案 0 :(得分:2)

在典型的情况下,处理这样的事情的流程将是:

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

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