module Base32
Module for encoding and decoding in Base32
per RFC 3548
Constants
- TABLE
- VERSION
Attributes
table[R]
Public Class Methods
chunks(str, size)
click to toggle source
# File lib/base32.rb, line 38 def self.chunks(str, size) result = [] bytes = str.bytes while bytes.any? do result << Chunk.new(bytes.take(size)) bytes = bytes.drop(size) end result end
decode(str)
click to toggle source
# File lib/base32.rb, line 52 def self.decode(str) chunks(str, 8).collect(&:decode).flatten.join end
encode(str)
click to toggle source
# File lib/base32.rb, line 48 def self.encode(str) chunks(str, 5).collect(&:encode).flatten.join end
random_base32(length=16, padding=true)
click to toggle source
# File lib/base32.rb, line 56 def self.random_base32(length=16, padding=true) random = '' OpenSSL::Random.random_bytes(length).each_byte do |b| random << self.table[b % 32] end padding ? random.ljust((length / 8.0).ceil * 8, '=') : random end
table=(table)
click to toggle source
# File lib/base32.rb, line 64 def self.table=(table) raise ArgumentError, "Table must have 32 unique characters" unless self.table_valid?(table) @table = table end
table_valid?(table)
click to toggle source
# File lib/base32.rb, line 69 def self.table_valid?(table) table.bytes.to_a.size == 32 && table.bytes.to_a.uniq.size == 32 end