If I hash passwords before storing them in my database, is that sufficient to prevent them being recovered by anyone?
 I should point out that this relates only to retrieval directly from the database, and not any other type of attack, such as bruteforcing the login page of the application, keylogger on the client, and of course rubberhose cryptanalysisrubberhose cryptanalysis (or nowadays we should call it "Chocolate Cryptanalysis").
  
Of course any form of hash will not prevent those attacks.