You're still passing the output to the server, which can be repeated. Certainly better than just a password, but not as good as public key crypto.
In the end, I'd probably prefer something like SRP
In the end, I'd probably prefer something like SRP
Not if the server generates a unique ID for each attempt, and that ID must be used in hashing. It can be as simple as a timestamp.