我找不到合适的测试向量来测试我的兔子密码代码,这是我根据"http://www.ecrypt.eu.org/stream/rabbitpf.html"中的规范文件开发的。
但是,我在"http://www.ecrypt.eu.org/stream/e2-rabbit.html"页面上的 C 源代码的 zip 文件中发现了一些测试向量。此处的测试向量具有 384 位 (128*3) 的输出流,但规范文件指出每轮后仅获得 128 位输出密钥流。
对正确性测试程序有任何帮助吗?
你应该在IETF上查看Rabbit流密码RFC:https://www.rfc-editor.org/rfc/rfc4503
特别是附录 A 和 B 具有一组测试向量,用于测试实现的正确性,以及在每次迭代后调试内部状态。
你可以看看RabitTest.java看看我是如何测试我的实现的。
请注意,每个测试的输入都是相同的(384 位0
),这就是为什么输出的长度也相同。密钥的长度为 128 位,但这与输出的长度无关,因为它仅用于设置内部状态。在加密过程中,会生成一个密钥流,它可以无限长,所以这就是为什么密钥长度与输出长度无关的原因。