我正在尝试使用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)
答案 0 :(得分:3)
update()
用于逐步计算字节序列的校验和。您的代码计算了在同一update()
对象上提供给CRC32
的所有密文的 concatentation 上的crc32。
尝试
c.reset()
c.update(ciphertext);
System.out.println("Now ciphertext = " + ciphertext + ", and CRC = " + c.getValue());