Модуль Base64
Модуль Base64 обеспечивает кодирование (#encode64, strict_encode64, urlsafe_encode64) и декодирование (#decode64, strict_decode64, urlsafe_decode64) двоичных данных с использованием Base64 представления.
Пример
Простой пример кодирования и декодирования.
require "base64"
enc = Base64.encode64('Send reinforcements')
# -> "U2VuZCByZWluZm9yY2VtZW50cw==\n"
plain = Base64.decode64(enc)
# -> "Send reinforcements"
Целью использования base64 для кодирования данных является перевод любых двоичных данных в чисто печатные символы.
Общедоступные методы экземпляра
# File lib/base64.rb, line 58
def decode64(str)
str.unpack1("m")
end Возвращает декодированную версию 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 38
def encode64(bin)
[bin].pack("m")
end Возвращает закодированную версию 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 73
def strict_decode64(str)
str.unpack1("m0")
end Возвращает декодированную версию Base64 из str. Этот метод соответствует RFC 4648. ArgumentError генерируется, если str некорректно дополнен или содержит символы, не входящие в алфавит. Обратите внимание, что CR или LF также отклоняются.
# File lib/base64.rb, line 65
def strict_encode64(bin)
[bin].pack("m0")
end Возвращает закодированную версию Base64 из bin. Этот метод соответствует RFC 4648. Символы новой строки не добавляются.
# File lib/base64.rb, line 97
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 Возвращает декодированную версию Base64 из str. Этот метод соответствует «Base 64 Encoding с URL и именем файла безопасным алфавитом» в RFC 4648. Алфавит использует «-» вместо «+» и «_» вместо «/».
Символ дополнения является необязательным. Этот метод принимает как корректно дополненные, так и не дополненные данные на входе. Обратите внимание, что он все еще отклоняет некорректно дополненные данные.
# File lib/base64.rb, line 83
def urlsafe_encode64(bin, padding: true)
str = strict_encode64(bin).tr("+/", "-_")
str = str.delete("=") unless padding
str
end Возвращает закодированную версию Base64 из bin. Этот метод соответствует «Base 64 Encoding с URL и именем файла безопасным алфавитом» в RFC 4648. Алфавит использует «-» вместо «+» и «_» вместо «/». Обратите внимание, что результат все еще может содержать «=». Вы можете удалить заполнение, установив padding в false.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.