什么校验和技术可以让我从其各部分的校验和计算整体的校验和?

时间:2012-04-23 00:32:06

标签: algorithm hash checksum crc

我想通过简单地将它们连接在一起,通过网络发送几个数据块,我希望能够使用校验和来验证一切都已经完成(这主要是为了防御)检查错误,而不是因为我已经看到或期望实际的低级别数据损坏)。所以我正在寻找一种校验和算法,让我从部件的校验和中计算整体的校验和。

我认为可行的技术的一个简单示例是将每个块的每个字节视为整数,并将所有这些整数添加到一起(当然,这不会检测到丢失的零字节) 。另一个是计算每个块的长度(当然,它不会检测不会导致网络插入或删除的数据更改)。另一个,我相信,将把所有字节放在一起,但这只能生成1字节校验和(我可以一次取4个字节,并对这些单元中的每一个进行异或,但如果块长度不是' t四的倍数,我不得不陷入混乱,我认为可能会删除简单地连接不同块的能力)。

所以,我正在寻找一种更严肃的校验和或散列算法,它仍然可以让我轻松计算出几个连续块的校验和,给出每个块的校验和。有没有?

1 个答案:

答案 0 :(得分:0)

通过TCP正确传输消息需要协议。该协议必须定义消息的开始,结束或最好两者。这意味着您将始终知道消息的长度。如果你的协议将lenth放在开头并且整数校验和放在消息的末尾,那么将检测到丢失的零字节,因为传输的校验和将从流中的错误字节中恢复,因此将是错误的,平均而言,65535超过65536。