Module: Base64
- Included in:
- Deprecated
- Defined in:
- lib/base64.rb
Overview
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).
Defined Under Namespace
Modules: Deprecated
Instance Method Summary collapse
-
#b64encode(bin, len = 60) ⇒ Object
Prints the Base64 encoded version of
bin
(aString
) in lines oflen
(default 60) characters. -
#decode64(str) ⇒ Object
Returns the Base64-decoded version of
str
. -
#decode_b(str) ⇒ Object
Decodes text formatted using a subset of RFC2047 (the one used for mime-encoding mail headers).
-
#encode64(bin) ⇒ Object
Returns the Base64-encoded version of
str
.
Instance Method Details
#b64encode(bin, len = 60) ⇒ Object
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==
112 113 114 115 116 |
# File 'lib/base64.rb', line 112 def b64encode(bin, len = 60) encode64(bin).scan(/.{1,#{len}}/) do print $&, "\n" end end |
#decode64(str) ⇒ Object
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...
58 59 60 |
# File 'lib/base64.rb', line 58 def decode64(str) str.unpack("m")[0] end |
#decode_b(str) ⇒ Object
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.
72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/base64.rb', line 72 def decode_b(str) str.gsub!(/=\?ISO-2022-JP\?B\?([!->@-~]+)\?=/i) { decode64($1) } str = Kconv::toeuc(str) str.gsub!(/=\?SHIFT_JIS\?B\?([!->@-~]+)\?=/i) { decode64($1) } str = Kconv::toeuc(str) str.gsub!(/\n/, ' ') str.gsub!(/\0/, '') str end |
#encode64(bin) ⇒ Object
96 97 98 |
# File 'lib/base64.rb', line 96 def encode64(bin) [bin].pack("m") end |