module Obfuscate

Public Class Methods

cipher() click to toggle source
# File lib/bp_obfuscate/obfuscate.rb, line 7
def cipher
  OpenSSL::Cipher.new('AES-256-CBC')
end
cipher_key() click to toggle source
# File lib/bp_obfuscate/obfuscate.rb, line 11
def cipher_key
  if defined?(Rails)
    Rails.application.secrets.secret_key_base
  elsif ENV["SECRET_KEY_BASE"]
    ENV["SECRET_KEY_BASE"]
  else
    raise NoCipherKey, "you must have a an SECRET_KEY_BASE or be in a rails enviroment"
  end
end
decrypt(value) click to toggle source
# File lib/bp_obfuscate/obfuscate.rb, line 21
def decrypt(value)
  c = cipher.decrypt
  c.key = Digest::SHA256.digest(cipher_key)
  c.update(Base64.urlsafe_decode64(value.to_s)) + c.final
rescue OpenSSL::Cipher::CipherError && ArgumentError
  return nil
end
encrypt(value) click to toggle source
# File lib/bp_obfuscate/obfuscate.rb, line 29
def encrypt(value)
  c = cipher.encrypt
  c.key = Digest::SHA256.digest(cipher_key)
  Base64.urlsafe_encode64(c.update(value.to_s) + c.final)
end