是否有可用于完全测试base64编码/解码器的数据集?

Dav*_*uls 7 base64 unit-testing

我看到开源中有很多base64实现,我发现在我维护的产品中有多个内部实现.

我试图分解重复,但我不是100%肯定所有这些实现都提供相同的输出.因此,我需要一个测试所有可能的输入组合的数据集.

那可以吗?谷歌搜索没有真正报告它.

我在stackoverflow上看到了一个类似的问题,但是还没有完全回答,实际上只是要求一个短语(在ascii中)来测试所有64个字符.例如,它不会使用=来处理填充.因此,一个测试字符串肯定不适合100%测试的账单.

Hug*_*ett 9

或许类似于Bouncy Castle中的Base64Test会做你想要的吗?base64中棘手的部分是正确处理填充.如你所述,覆盖它当然很重要.因此,RFC 4648指定了这些测试向量:

   BASE64("") = ""
   BASE64("f") = "Zg=="
   BASE64("fo") = "Zm8="
   BASE64("foo") = "Zm9v"
   BASE64("foob") = "Zm9vYg=="
   BASE64("fooba") = "Zm9vYmE="
   BASE64("foobar") = "Zm9vYmFy"
Run Code Online (Sandbox Code Playgroud)

您的某些实现可能会生成base64输出,这些输出的不同之处仅在于它们是否插入换行符,以及断开行的实现插入了断点和使用的行终止.您将不得不进行其他测试以确定是否可以安全地替换使用不同类型的实现.特别地,解码器可以做出关于线路长度或终止的假设.

  • 在单元测试中,充气城堡中的测试有点不好。它生成随机数据,然后检查编码解码是否最终得到原始随机数据。 (2认同)