class Nexaas::Cipher::XorCrypter

XorCrypter: allows perform XOR cipher

Protected Class Methods

obfuscate_key(key, code) click to toggle source
# File lib/nexaas/cipher/xor_crypter.rb, line 30
def obfuscate_key(key, code)
  len = key.length
  (code + "\0" + Array(0..255).sample(len).pack('C*'))[0, len]
end
xor(code, key) click to toggle source
# File lib/nexaas/cipher/xor_crypter.rb, line 24
def xor(code, key)
  key.unpack('C*').zip(code.unpack('C*')).
    map { |fst, lst| fst ^ (lst || 0) }.
    pack('C*')
end
xor_encrypt(key, code, obfuscate) click to toggle source

obfuscate :reek:ControlParameter

# File lib/nexaas/cipher/xor_crypter.rb, line 20
def xor_encrypt(key, code, obfuscate)
  xor(obfuscate ? obfuscate_key(key, code) : code, key)
end

Protected Instance Methods

do_decrypt(code, **options) click to toggle source
# File lib/nexaas/cipher/xor_crypter.rb, line 14
def do_decrypt(code, **options)
  do_encrypt(code, options).split("\0").first
end
do_encrypt(code, obfuscate: false, **options) click to toggle source

obfuscate :reek:BooleanParameter

# File lib/nexaas/cipher/xor_crypter.rb, line 10
def do_encrypt(code, obfuscate: false, **options)
  self.class.xor_encrypt(salt.salt(code, **options), code, obfuscate)
end