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