Base64
module Base64(模块 Base64)
Base64 模块使用 Base64 表示提供二进制数据的编码(#encode64,strict_encode64,urlsafe_encode64)和解码(#decode64,strict_decode64,urlsafe_decode64)。
示例
一个简单的编码和解码。
require "base64"
enc = Base64.encode64('Send reinforcements')
# -> "U2VuZCByZWluZm9yY2VtZW50cw==\n"
plain = Base64.decode64(enc)
# -> "Send reinforcements"
使用 base64 编码数据的目的是将任何二进制数据转换为纯可打印字符。
公共实例方法
decode64(str)显示源码
返回 Base64 解码str
版本。此方法符合 RFC 2045。基本字母表外的字符将被忽略。
require 'base64'
str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' +
'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' +
'ZSB0aHJlZQpBbmQgc28gb24uLi4K'
puts Base64.decode64(str)
产生:
This is line one
This is line two
This is line three
And so on...
# File lib/base64.rb, line 57
def decode64(str)
str.unpack("m").first
end
encode64(bin)显示源代码
返回 Base64 编码的bin
版本。此方法符合 RFC 2045。换行符被添加到每60个编码字符。
require 'base64'
Base64.encode64("Now is the time for all good coders\nto learn Ruby")
产生:
Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
UnVieQ==
# File lib/base64.rb, line 37
def encode64(bin)
[bin].pack("m")
end
strict_decode64(str)显示源码
返回 Base64 解码str
版本。此方法符合 RFC 4648。如果str
填充不正确或包含非字母字符,则会引发 ArgumentError 。请注意,CR 或 LF 也会被拒绝。
# File lib/base64.rb, line 72
def strict_decode64(str)
str.unpack("m0").first
end
strict_encode64(bin)显示源代码
返回 Base64 编码的bin
版本。此方法符合 RFC 4648。不添加换行符。
# File lib/base64.rb, line 64
def strict_encode64(bin)
[bin].pack("m0")
end
urlsafe_decode64(str)显示源码
返回str
的Base64解码版本.此方法符合 RFC 4648 中的“Base 64 Encoding with URL and Filename Safe Alphabet”。字母表使用' - '而不是'+'和'_'而不是'/'。
填充字符是可选的。该方法接受正确填充和未填充的输入。请注意,它仍拒绝填充不正确的输入。
# File lib/base64.rb, line 96
def urlsafe_decode64(str)
# NOTE: RFC 4648 does say nothing about unpadded input, but says that
# "the excess pad characters MAY also be ignored", so it is inferred that
# unpadded input is also acceptable.
str = str.tr("-_", "+/")
if !str.end_with?("=") && str.length % 4 != 0
str = str.ljust((str.length + 3) & ~3, "=")
end
strict_decode64(str)
end
urlsafe_encode64(bin,padding:true)显示源文件
返回 Base64 编码的bin
版本。此方法符合 RFC 4648 中的“Base 64 Encoding with URL and Filename Safe Alphabet”。字母表使用' - '而不是'+'和'_'而不是'/'。请注意,结果仍然可以包含“=”。您可以通过设置padding
为 false 来删除填充。
# File lib/base64.rb, line 82
def urlsafe_encode64(bin, padding: true)
str = strict_encode64(bin).tr("+/", "-_")
str = str.delete("=") unless padding
str
end