Java 字节数组长度1000的校验和有多少字节

Java 字节数组长度1000的校验和有多少字节,java,networking,checksum,Java,Networking,Checksum,我正在实施一个可靠的数据传输协议。最大数据包长度为1000字节。我需要多少字节来存储最大数据包大小的校验和?我尝试使用一个字节来存储校验和,但接收器无法获得与存储的校验和相同的校验和 Checksum checksum = new CRC32(); checksum.update(out_data, 0, out_data.length-1); Long checksumValue = checksum.getValue(); out_data[out_data.length-1] = ch

我正在实施一个可靠的数据传输协议。最大数据包长度为1000字节。我需要多少字节来存储最大数据包大小的校验和?我尝试使用一个字节来存储校验和,但接收器无法获得与存储的校验和相同的校验和

Checksum checksum = new CRC32();
checksum.update(out_data, 0, out_data.length-1);

Long checksumValue = checksum.getValue();
out_data[out_data.length-1] =  checksumValue.byteValue();

这是我的校验和实现代码。我使用字节数组的最后一个插槽进行校验和。请注意,这不是数据包损坏的情况,因为我正在运行的不可靠网络的模拟是可靠的。

您可以对任何大小的数据进行校验和。以太网帧通常为1500+字节,仅使用4个字节进行校验和。如果您希望安全起见,请使用sha1(但它会占用20个字节,并且计算速度可能较慢)


要将CRC32的结果放入数组,需要4个字节(32位/8位/字节)

您可以对任何大小的内容进行校验和。以太网帧通常为1500+字节,仅使用4个字节进行校验和。如果您希望安全起见,请使用sha1(但它会占用20个字节,并且计算速度可能较慢)

要将CRC32的结果放入数组,需要4个字节(32位/8位/字节)

字节数组长度1000的校验和有多少字节

这是一个很难回答的问题

首先,无论校验和有多大,也不管它是如何计算的,都无法消除无法检测到的损坏的可能性。(即使校验和值与消息值一样多,也无法消除传输将损坏消息和校验和的可能性…)

如果我们对所有可能的损坏进行平均,那么我们所能期望的最好结果是,N位校验和将在2N中一次检测不到损坏。如果这个概率太高,你需要增加N

通过简单的分析,你必须考虑特定的校验和算法及其检测常见错误的能力;e、 g.单位翻转、位换位等。我不知道这方面的“数学知识”,但我想实际的校验和算法会变得非常复杂,经验方法会给出最好的答案。但我也认为推荐的算法接近理论上的“2N中的一次”,并且它们对于常见的错误综合症没有任何特别的弱点

因此,最好的建议可能是找出你认为合适的概率,然后用它来选择一个
N
。。。还有一个算法,它可以给你这个大小(或更大)的校验和

字节数组长度1000的校验和有多少字节

这是一个很难回答的问题

首先,无论校验和有多大,也不管它是如何计算的,都无法消除无法检测到的损坏的可能性。(即使校验和值与消息值一样多,也无法消除传输将损坏消息和校验和的可能性…)

如果我们对所有可能的损坏进行平均,那么我们所能期望的最好结果是,N位校验和将在2N中一次检测不到损坏。如果这个概率太高,你需要增加N

通过简单的分析,你必须考虑特定的校验和算法及其检测常见错误的能力;e、 g.单位翻转、位换位等。我不知道这方面的“数学知识”,但我想实际的校验和算法会变得非常复杂,经验方法会给出最好的答案。但我也认为推荐的算法接近理论上的“2N中的一次”,并且它们对于常见的错误综合症没有任何特别的弱点


因此,最好的建议可能是找出你认为合适的概率,然后用它来选择一个
N
。。。以及一种算法,它可以为您提供该大小(或更大)的校验和。

校验和没有所需的最小长度,它只影响检测错误的程度。接收方计算不同的校验和意味着数据包损坏(=校验和完成了它的工作)或者校验和实现中断。一旦您排除了前者,请展示一些代码,以便我们可以检查后者。1000字节数组的相当安全的校验和长度为1000字节。但从过去的经验来看,每个字节都有一个奇偶校验位D就足够了,所以n/8位校验和也可以。是的,你是对的。也许我的校验和实现坏了。我如上所述添加了代码。@Ingo-如果1000字节的校验和是安全的,那么2000字节的校验和会更安全。@Ingo-3000字节的校验和会更安全(如果以错误未被检测到的概率来衡量;另外,有了这么多冗余,你可以三取二进行恢复);没有上限:-)校验和没有所需的最小长度,它只影响检测错误的程度。接收方计算不同的校验和意味着数据包损坏(=校验和完成了它的工作)或者校验和实现中断。一旦您排除了前者,请展示一些代码,以便我们可以检查后者。1000字节数组的相当安全的校验和长度为1000字节。但从过去的经验来看,每个字节都有一个奇偶校验位D就足够了,所以n/8位校验和也可以。是的,你是对的。也许我的校验和实现坏了。我如上所述添加了代码。@Ingo-如果1000字节的校验和是安全的,那么2000字节的校验和会更安全。@Ingo-3000字节的校验和会更安全(如果以错误未被检测到的概率来衡量;另外,有了这么多冗余,你可以三取二进行恢复);没有上限:-)我现在有个问题。。如何将CRC32值转换为