Method: Rex::Text.b32decode

Defined in:
lib/rex/text/base32.rb

.b32decode(bytes_in) ⇒ Object

Base32 decoder



64
65
66
67
68
69
70
# File 'lib/rex/text/base32.rb', line 64

def self.b32decode(bytes_in)
  bytes = bytes_in.take_while {|c| c != 61} # strip padding
  n = (bytes.length * 5.0 / 8.0).floor
  p = bytes.length < 8 ? 5 - (n * 8) % 5 : 0
  c = bytes.inject(0) {|m,o| (m << 5) + Base32.index(o.chr)} >> p
  (0..n-1).to_a.reverse.collect {|i| ((c >> i * 8) & 0xff).chr}
end