Java在相同的字符串上返回不同的CRC32结果

时间:2015-06-02 16:45:46

标签: java crc crc32

我正在尝试使用RC4和CRC32来模拟一点翻转攻击,而且我对Java中CRC32的行为感到头疼。据我所知,这应该是基于多项式计算的确定性结果。然而,我所看到的是,无论文本是否实际发生变化,CRC都会以不可预测的方式发生变化。 Javadoc只是在字节数组上声明update():使用指定的字节数组更新CRC-32校验和。和getValue():返回CRC-32值。< / em>这里是否涉及某种盐或PRF我不会计算(我不这么认为)?

输出:

$("#displayArea img")

代码:

run:
Ciphertext = [B@34e51b72, and CRC = 232697804
Now ciphertext = [B@34e51b72, and CRC = 1990877612
Now ciphertext = [B@34e51b72, and CRC = 1720857375
Now ciphertext = [B@34e51b72, and CRC = 4144065286
Now ciphertext = [B@34e51b72, and CRC = 1992352640
BUILD SUCCESSFUL (total time: 1 second)

1 个答案:

答案 0 :(得分:3)

update()用于逐步计算字节序列的校验和。您的代码计算了在同一update()对象上提供给CRC32的所有密文的 concatentation 上的crc32。

尝试

c.reset()
c.update(ciphertext);   
System.out.println("Now ciphertext = " + ciphertext + ", and CRC = " + c.getValue());