module NdrSupport::Obfuscator

Contains logic for consistently obfuscating names and addresses using a simple substitution cipher.

Public Instance Methods

obfuscate(name, seed = nil) click to toggle source

Obfuscate a name or address, either with the given seed, or default seed

# File lib/ndr_support/obfuscator.rb, line 13
def obfuscate(name, seed = nil)
  rnd = Random.new(seed || @seed)
  vowels = %w(A E I O U)
  consonants = ('A'..'Z').to_a - vowels
  digits = ('0'..'9').to_a
  dict = Hash[(vowels + consonants + digits).zip(vowels.shuffle(random: rnd) +
                                                 consonants.shuffle(random: rnd) +
                                                 digits.shuffle(random: rnd))]
  name.upcase.split(//).map { |s| dict[s] || s }.join
end
setup(seed) click to toggle source

Set default obfuscation seed

# File lib/ndr_support/obfuscator.rb, line 8
def setup(seed)
  @seed = seed
end