| Module | Base64 |
| In: |
lib/base64.rb
|
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:
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).
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==
# File lib/base64.rb, line 112
112: def b64encode(bin, len = 60)
113: encode64(bin).scan(/.{1,#{len}}/) do
114: print $&, "\n"
115: end
116: end
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...
# File lib/base64.rb, line 58
58: def decode64(str)
59: str.unpack("m")[0]
60: end
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.
# File lib/base64.rb, line 72
72: def decode_b(str)
73: str.gsub!(/=\?ISO-2022-JP\?B\?([!->@-~]+)\?=/i) {
74: decode64($1)
75: }
76: str = Kconv::toeuc(str)
77: str.gsub!(/=\?SHIFT_JIS\?B\?([!->@-~]+)\?=/i) {
78: decode64($1)
79: }
80: str = Kconv::toeuc(str)
81: str.gsub!(/\n/, ' ')
82: str.gsub!(/\0/, '')
83: str
84: end
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==
# File lib/base64.rb, line 96
96: def encode64(bin)
97: [bin].pack("m")
98: end