是否有[[anything可用而无法轻易破解?
此2008年的答案现在很危险地过时。
SHA(所有变体)现在都是易碎的,并且最佳实践是(截至2013年1月)使用密钥拉伸哈希(如PBKDF2)或理想情况下占用大量RAM的内存(例如Bcrypt),并且还要添加每位用户的盐。
不要自己发明],但是如果您必须在这里达到绝对最低要求,则必须采取某种安全措施: 基本规则:
但是,有专门为从密码派生密钥而创建的算法。这些是key derivation functions。它们设计用于对称密码,但也非常适合存储密码。例如,PBKDF2使用盐,大量迭代和良好的哈希函数。如果您有一个库,它是由什么实现的(例如.NET),我认为您应该考虑一下。
2013年1月更新
http://arstechnica.com/security/2012/08/passwords-under-assault/
所以要使用诸如http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx之类的其他东西>
但是,如果您愿意接受字典攻击的威胁,则MD5和SHA1都绰绰有余。 SHA1更安全,但是对于大多数应用程序来说,这确实不是一个重大改进。
http://arstechnica.com/security/2012/08/passwords-under-assault/