Spec-Zone.ru › Ruby 2.6

Модуль 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 для кодирования данных является перевод любых двоичных данных в чисто печатные символы.

Общедоступные методы экземпляра

decode64(str) Показать исходный код
# 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...
encode64(bin) Показать исходный код
# 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==
strict_decode64(str) Показать исходный код
# File lib/base64.rb, line 73
def strict_decode64(str)
  str.unpack1("m0")
end

Возвращает декодированную версию Base64 из str. Этот метод соответствует RFC 4648. ArgumentError генерируется, если str некорректно дополнен или содержит символы, не входящие в алфавит. Обратите внимание, что CR или LF также отклоняются.

strict_encode64(bin) Показать исходный код
# File lib/base64.rb, line 65
def strict_encode64(bin)
  [bin].pack("m0")
end

Возвращает закодированную версию Base64 из bin. Этот метод соответствует RFC 4648. Символы новой строки не добавляются.

urlsafe_decode64(str) Показать исходный код
# 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. Алфавит использует «-» вместо «+» и «_» вместо «/».

Символ дополнения является необязательным. Этот метод принимает как корректно дополненные, так и не дополненные данные на входе. Обратите внимание, что он все еще отклоняет некорректно дополненные данные.

urlsafe_encode64(bin, padding: true) Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API