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