上传时或上传后加密文件

3
我有一个使用C#的.NET Web应用程序,允许用户上传文件。为了增强安全性,我们需要对该文件进行加密,而不是将其保留在服务器上。因此,我们还需要一种解密文件的方式,以便用户可以从Web应用程序中查看它。请问是否有推荐的方法来实现这一点?文件类型可能会有所变化,但现在他们只希望上传.pdf文件。谢谢。

安全防范什么/谁?如果您将密钥存储在同一台机器上,那么您不会增加任何安全性。 - SLaks
1
为什么不直接使用HTTPS? - Kek
这是通过 HTTP 吗?请使用 SSL(例如 https)。 - Marc B
@Kek,问题不在于传输层的加密,而是静态数据的加密。例如,AWS具有SSL但没有对静态文件进行加密。 - Candide
我需要确保文件在休息时是安全的,以防有人进入盒子。如果我将文件传输到数据库中,我们需要通过WCF服务进行传输,这是与数据库相关的任何内容的用户要求,因此我需要确保传输是安全的。我可以使用SSL来实现,但我不确定用户是否想要这样做,因此现在我们计划将其留在文件系统上,但不确定如何保护它。 - Paritosh
1个回答

3
请按照以下步骤操作:
  1. 使用AES加密算法
  2. 将AES密钥和IV作为二进制数据存储在数据库中
  3. 对上传的文件流进行加密
  4. 添加一个通用处理程序*.ashx,在其中查询数据库以获取AES密钥和IV
  5. 将解密后的字节写入响应流中

注意:请保留HTML标记,并对文本进行优化,使其更易于理解。

在将AES密钥存储到数据库之前,应对其进行加密。不要将IV存储在数据库中,为每个加密的文件生成新的IV并将其放置在加密负载的前面,它们具有固定长度,因此可以在解密时将其删除。 - BenCr
1
这并不是关于将它们存储在数据库中,而是如果您使用相同的密钥和IV,并且您的明文数据以相同的内容开头,例如 <?xml version="1.0" encoding="UTF-8" ?>,那么每个密码文本都将以相同的方式开头。这只是透露了一些有关加密内容的信息,如果对每个加密的东西使用新的IV,则不会出现这种情况。 - BenCr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接