def check_password(given_password, real_password)
real_password = real_password.to_s.chomp.strip
given_password = given_password.to_s
raise ArgumentError, "Empty password set" if real_password.empty?
raise ArgumentError, "No password given" if given_password.empty?
if real_password =~ /^(\{(?:crypt|CRYPT)\})?((\$(?:1|2a|5|6)\$[a-zA-Z0-9.\/]{1,16}\$)?[a-zA-Z0-9\.\/]+)$/
crypt = $1.to_s
crypted_password = $2
salt = $3.to_s
force_crypt = (!crypt.empty? or !salt.empty?)
result = ( given_password.crypt( crypted_password ) == crypted_password )
return result if result or force_crypt
end
return (given_password == real_password)
end