Module

Base64

Inheritance

The Base64 module provides for the encoding (encode64) and decoding (decode64) of binary data using a Base64 representation.

The following particular features are also provided:

  • encode into lines of a given length (b64encode)
  • decode the special format specified in RFC2047 for the representation of email headers (decode_b)

Example

A simple encoding and decoding.

    require "base64"

    enc   = Base64.encode64('Send reinforcements')
                        # -> "U2VuZCByZWluZm9yY2VtZW50cw==\n"
    plain = Base64.decode64(enc)
                        # -> "Send reinforcements"

The purpose of using base64 to encode data is that it translates any binary data into purely printable characters. It is specified in RFC 2045 (www.faqs.org/rfcs/rfc2045.html).

Methods

Instance

Visibility Signature
public b64encode (bin, len = 60)
public decode64 (str)
public decode_b (str)
public encode64 (bin)

Instance Method Detail

b64encode(bin, len = 60)

Prints the Base64 encoded version of bin (a String) in lines of len (default 60) characters.

   require 'base64'
   data = "Now is the time for all good coders\nto learn Ruby"
   Base64.b64encode(data)

Generates:

   Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
   UnVieQ==

decode64(str)

Returns the Base64-decoded version of str.

  require 'base64'
  str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' +
        'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' +
        'ZSB0aHJlZQpBbmQgc28gb24uLi4K'
  puts Base64.decode64(str)

Generates:

   This is line one
   This is line two
   This is line three
   And so on...

decode_b(str)

Decodes text formatted using a subset of RFC2047 (the one used for mime-encoding mail headers).

Only supports an encoding type of ‘b’ (base 64), and only supports the character sets ISO-2022-JP and SHIFT_JIS (so the only two encoded word sequences recognized are =?ISO-2022-JP?B?…= and =?SHIFT_JIS?B?…=). Recognition of these sequences is case insensitive.

encode64(bin)

Returns the Base64-encoded version of str.

   require 'base64'
   Base64.b64encode("Now is the time for all good coders\nto learn Ruby")

Generates:

   Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
   UnVieQ==