class Obfuscate::Crypt
Constants
- Base64Error
- UnsupportedModeError
Attributes
config[R]
exec_config[R]
Public Class Methods
new(config)
click to toggle source
New instance of Obfuscate::Crypt
@param [Obfuscate::Config]
# File lib/obfuscate/crypt.rb, line 30 def initialize(config) @crypt = Crypt::Blowfish.new( config.salt ) @config = config end
Public Instance Methods
clarify(text, override_mode = nil)
click to toggle source
Clarify text
@param [Symbol] override_mode to explicit set clarify mode to :string or :block @return [String]
# File lib/obfuscate/crypt.rb, line 64 def clarify(text, override_mode = nil) @exec_config = @config.apply(:mode => (override_mode || @config.mode)) obfuscated = text.to_s if @exec_config.encode obfuscated << "=" if @exec_config.remove_trailing_equal? obfuscated = Base64.urlsafe_decode64(obfuscated) end begin if @exec_config.mode == :string @crypt.decrypt_string(obfuscated) elsif @exec_config.mode == :block @crypt.decrypt_block(obfuscated).strip else raise UnsupportedModeError.new("Unknown mode: #{@exec_config.mode}") end rescue ArgumentError => ex raise Base64Error.new("Cannot decode #{text}") if ex.message == 'invalid base64' raise ex rescue => ex raise Base64Error.new("Cannot decode #{text}") if ex.message == "undefined method `%'" raise ex end end
obfuscate(text, override_mode = nil)
click to toggle source
Obfuscate
text
@param [Symbol] override_mode to explicit set obfuscate mode to :string or :block @return [String]
# File lib/obfuscate/crypt.rb, line 39 def obfuscate(text, override_mode = nil) @exec_config = @config.apply(:mode => (override_mode || @config.mode) ) obfuscated = nil if @exec_config.mode == :string obfuscated = @crypt.encrypt_string(text) elsif @exec_config.mode == :block obfuscated = @crypt.encrypt_block(text.to_s.ljust(8)) else raise "Unsupport Mode" end if @exec_config.encode obfuscated = Base64.urlsafe_encode64(obfuscated).strip obfuscated = obfuscated.chomp("=") if @exec_config.remove_trailing_equal? end obfuscated end