2013-07-06 41 views
0

我需要使用Web服务传递文件(我可以控制Web服务)。为了满足安全要求,我需要确保传递的文件没有被修改或损坏。我打算像下面这样做。使用校验和验证接收到的文件

  1. 转换我的文件byte[]
  2. 计算哈希,

    System.Security.Cryptography.MD5.Create().ComputeHash(stream);

  3. 传递文件

当我传递文件(字节数组)网络服务,正在传递我的散列值一个很好的做法?

还是我需要按照其他一些过程来检查文件?处理这个问题的最好方法是什么?

+0

只需在帖子标题中指定算法的校验和即可。 – Romoku

+0

@ Romoku-抱歉,我不清楚你说的是什么。您能否提供一些示例链接?我正在使用Web服务来传输文件。 –

回答

0

如果是安全需求,发送MD5和文件可能不是你想要做的:任何可以拦截文件的人也可以重写校验和。

我使用CRC代替它们:它们对文件(或流)的内容中的小变化更敏感,并且它们更紧凑,更易于比较。 .NET似乎没有CRC实现,但我在网上发现了一个很好的工具,它似乎很好用,Calculating CRC-32 in C# and .NET

您的客户端是否具有独立计算校验和的能力?

+0

是的。客户有这种能力。如果我将收到的文件校验和从Web服务返回给客户端,以便客户端可以验证该文件。这个过程是否很好实施? –

+0

取决于您的安全需求。如果你的目标是100%验证文件的逻辑完整性,你提议的是好的。如果要确保它没有被篡改(更安全相关),我会建议构建一些更精细的东西。 – Curt