如何检查传输的文件不会更改

时间:2013-07-08 09:27:50

标签: c# checksum

我有web service,我将通过该网络服务访问database。我将使用Web服务将文本文件保存到我的数据库。

在将文件保存到数据库之前,我想确保文件没有更改。

我不知道该怎么做。可以请任何人解释我如何做到这一点。指定步骤就足够了。

修改

我将我的文本文件作为byte array传递给Web服务。换句话说,我想确保我发送的所有字节都已经接收到Web服务。(没有损坏也没有数据丢失)。我也控制着Web服务。

2 个答案:

答案 0 :(得分:1)

您通常不需要检查,您有不同的通信层,为您做到这一点。

如果包裹在运输过程中丢失,将重新发送,如果损坏,将再次更正/发送。假设您使用的是 TCP / IP协议,您的传输层可确保数据正确传输,而无需您处理。

(这是一个文件而不是流媒体视频, UDP协议可能会损坏数据,这在视频/音频中是可以的)

*只是为了清理:你在应用层。 Example of layers

修改

关于TCP / IP的Wikipedia

此抽象还允许上层提供较低层不提供的服务。虽然最初的OSI模型扩展到包括无连接服务(OSIRM CL),[16] IP并非设计为可靠的,并且是尽力而为的交付协议。这意味着所有传输层实现必须选择是否或如何提供可靠性。 UDP通过校验和提供数据完整性,但不保证交付; TCP通过重新传输提供数据完整性和传送保证,直到接收方确认接收到数据包

答案 1 :(得分:1)

您应该计算文件的校验和,以便在客户端验证它。

string checkSum=null;
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create()) {
  checkSum= BitConverter.ToString(
    md5.ComputeHash(Encoding.UTF8.GetBytes(theString))
  ).Replace("-", String.Empty);
}