module Smbhash

Public Instance Methods

lm_hash(password, encoding=nil) click to toggle source
# File lib/smbhash.rb, line 5
def lm_hash(password, encoding=nil)
  dos_password = Private.convert_encoding("ISO-8859-1",
                                          encoding || "UTF-8",
                                          password.upcase)
  fail ArgumentError, 'Password must be < 14 characters in ISO-8859-1' if dos_password.size > 14

  Private.encrypt_14characters(dos_password).unpack("C*").collect do |char|
    "%02X" % char
  end.join
end
ntlm_hash(password, encoding=nil) click to toggle source
# File lib/smbhash.rb, line 16
def ntlm_hash(password, encoding=nil)
  ucs2_password = Private.convert_encoding("UTF-16LE",
                                           encoding || "UTF-8",
                                           password)

  fail ArgumentError, 'Password must be < 255 characters in UTF-16LE' if ucs2_password.size > 255

  hex = OpenSSL::Digest::MD4.new(ucs2_password).hexdigest.upcase
  hex
end
ntlmgen(password, encoding=nil) click to toggle source
# File lib/smbhash.rb, line 27
def ntlmgen(password, encoding=nil)    
  [
    lm_hash(password, encoding),
    ntlm_hash(password, encoding)
  ]
end