什么是填充的Base64编码字符串,如何在Ruby中生成它们?

5

我正在使用的第三方API的文档中写道:

"[O]ur API只接受填充的Base64编码字符串。"

什么是“填充的Base64编码字符串”,如何在Ruby中生成它们?下面的代码是我尝试将JSON格式数据转换为Base64的第一次尝试。

  xa = Base64.encode64(a.to_json)

这可能会有所帮助:http://en.wikipedia.org/wiki/Base64#Padding - Earlz
2个回答

6

他们所说的填充实际上是Base64本身的一部分。它是末尾处的"="和"=="。Base64将3字节的数据包编码为4个字符。因此,如果您的输入数据长度为n,则:

  • n % 3 = 1 => 以"=="结尾进行填充
  • n % 3 = 2 => 以"="结尾进行填充

您不需要更改代码。


2
看起来base64库默认进行了填充; 在Base64中,填充将会在数据末尾添加=字符。
您可以在irb控制台中运行以下命令查看:
irb(main):002:0> require 'base64'
=> true
irb(main):003:0> Base64.encode64('a')
=> "YQ==\n"

没有填充,你无法确定YQ是否包含所有内容或者是否缺少一些东西。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接