This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
require 'digest'
|
||||
|
||||
module Digest
|
||||
|
||||
module Instance
|
||||
|
||||
# For Ruby < 1.9.2
|
||||
|
||||
unless instance_methods.include? :base64digest
|
||||
|
||||
# From Ruby 1.9.2 source
|
||||
def base64digest(str = nil)
|
||||
[str ? digest(str) : digest].pack('m0')
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
unless instance_methods.include? :base64digest!
|
||||
|
||||
# From Ruby 1.9.2 source
|
||||
def base64digest!
|
||||
[digest!].pack('m0')
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Class
|
||||
|
||||
# For Ruby < 1.9.2
|
||||
|
||||
unless methods.include? :base64digest
|
||||
|
||||
# From Ruby 1.9.2 source
|
||||
def self.base64digest(str, *args)
|
||||
[self.digest(str, *args)].pack('m0')
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
require 'digest'
|
||||
require 'facets/string/random_binary'
|
||||
|
||||
module Digest
|
||||
|
||||
module Instance
|
||||
# CREDIT: Guido De Rosa
|
||||
def salted_digest(str='', salt=:auto)
|
||||
if salt == :auto
|
||||
salt = String.random_binary(digest_length)
|
||||
end
|
||||
digest(str + salt) + salt
|
||||
end
|
||||
|
||||
# CREDIT: Guido De Rosa
|
||||
def salted_hexdigest(str, salt)
|
||||
Digest.hexencode(salted_digest(str, salt))
|
||||
end
|
||||
|
||||
# CREDIT: Guido De Rosa
|
||||
def salted_base64digest(str, salt)
|
||||
[salted_digest(str, salt)].pack('m0')
|
||||
end
|
||||
end
|
||||
|
||||
class Class
|
||||
# CREDIT: Guido De Rosa
|
||||
def self.salted_digest(str, salt=:auto, *args)
|
||||
new(*args).salted_digest(str, salt)
|
||||
end
|
||||
|
||||
# CREDIT: Guido De Rosa
|
||||
def self.salted_hexdigest(str, salt=:auto, *args)
|
||||
new(*args).salted_hexdigest(str, salt)
|
||||
end
|
||||
|
||||
# CREDIT: Guido De Rosa
|
||||
def self.salted_base64digest(str, salt=:auto, *args)
|
||||
new(*args).salted_base64digest(str, salt)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user