Module: Base64
- Defined in:
- lib/framework/base64.rb
Overview
The Base64 module provides for the encoding (#encode64, #strict_encode64, #urlsafe_encode64) and decoding (#decode64, #strict_decode64, #urlsafe_decode64) of binary data using a Base64 representation.
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.
Class Method Summary collapse
-
.decode64(str) ⇒ Object
Returns the Base64-decoded version of
str
. -
.encode64(bin) ⇒ Object
Returns the Base64-encoded version of
bin
. -
.strict_decode64(str) ⇒ Object
Returns the Base64-decoded version of
str
. -
.strict_encode64(bin) ⇒ Object
Returns the Base64-encoded version of
bin
. -
.urlsafe_decode64(str) ⇒ Object
Returns the Base64-decoded version of
str
. -
.urlsafe_encode64(bin) ⇒ Object
Returns the Base64-encoded version of
bin
.
Class Method Details
.decode64(str) ⇒ Object
Returns the Base64-decoded version of str
. This method complies with RFC 2045. Characters outside the base alphabet are ignored.
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...
57 58 59 |
# File 'lib/framework/base64.rb', line 57 def decode64(str) str.unpack("m").first end |
.encode64(bin) ⇒ Object
Returns the Base64-encoded version of bin
. This method complies with RFC 2045. Line feeds are added to every 60 encoded charactors.
require 'base64'
Base64.encode64("Now is the time for all good coders\nto learn Ruby")
Generates:
Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
UnVieQ==
37 38 39 |
# File 'lib/framework/base64.rb', line 37 def encode64(bin) [bin].pack("m") end |
.strict_decode64(str) ⇒ Object
Returns the Base64-decoded version of str
. This method complies with RFC 4648. ArgumentError is raised if str
is incorrectly padded or contains non-alphabet characters. Note that CR or LF are also rejected.
72 73 74 |
# File 'lib/framework/base64.rb', line 72 def strict_decode64(str) str.unpack("m0").first end |
.strict_encode64(bin) ⇒ Object
Returns the Base64-encoded version of bin
. This method complies with RFC 4648. No line feeds are added.
64 65 66 |
# File 'lib/framework/base64.rb', line 64 def strict_encode64(bin) [bin].pack("m0") end |
.urlsafe_decode64(str) ⇒ Object
Returns the Base64-decoded version of str
. This method complies with “Base 64 Encoding with URL and Filename Safe Alphabet” in RFC 4648. The alphabet uses ‘-’ instead of ‘+’ and ‘_’ instead of ‘/’.
88 89 90 |
# File 'lib/framework/base64.rb', line 88 def urlsafe_decode64(str) strict_decode64(str.tr("-_", "+/")) end |
.urlsafe_encode64(bin) ⇒ Object
Returns the Base64-encoded version of bin
. This method complies with “Base 64 Encoding with URL and Filename Safe Alphabet” in RFC 4648. The alphabet uses ‘-’ instead of ‘+’ and ‘_’ instead of ‘/’.
80 81 82 |
# File 'lib/framework/base64.rb', line 80 def urlsafe_encode64(bin) strict_encode64(bin).tr("+/", "-_") end |