2012-12-03 37 views
3

我有一个.net网络应用程序,使用C#,它将允许用户上传文件,我们需要加密该文件以使其更加安全,而不是像原样离开文件服务器,所以还需要一种解密文件的方式,以便用户可以从Web应用程序中查看它。有人可以推荐一种方法来做到这一点?文件类型可能会有所不同,但现在他们只希望上传.pdf文件,如果这很重要的话。在上传过程中或上传后加密文件

谢谢。

+0

**针对哪些人?** http://blogs.msdn.com/b/ericlippert/archive/2011/09/27/keep-it-secret-keep-it-safe.aspx If您将密钥存储在同一台计算机上,则不会添加任何安全性。 – SLaks

+1

为什么不使用HTTPS? – Kek

+0

是通过http?只需使用SSL(例如https)。 –

回答

2

遵循以下步骤:

  1. 使用AES encryption
  2. 生成和存储AES密钥和IV型为varbinary数据库
  3. 加密来当有人上传文件
  4. 添加文件流一个常规处理程序* .ashx,并在其中查询数据库以获取AES密钥和IV
  5. 写入响应流的解密字节
+0

您应该在将AES密钥存储在数据库之前对其进行加密。不要将IV存储在数据库中,为每个您加密的文件生成新的文件,并将它们粘贴在加密的有效负载的前端,它们是固定长度的,因此您可以再次将它们取出用于解密。 – BenCr

+0

@BenCr:在数据库中存储IV有什么问题? – SLaks

+1

这不是真的关于将它们存储在数据库中,它是如果您使用相同的密钥和IV,并且您的清除数据以相同的事物开始,例如'<?xml version =“1.0”encoding =“UTF-8”?>那么每个密码文本将开始相同。它只是提供了一些有关加密的内容,对于每个加密的东西你都不会得到新的IV。 – BenCr