回答
我会遵循NIST/FIPS guidelines:
2006年3月15日:在SHA-2家族的 散列函数(即SHA-224,SHA -256,SHA-384和SHA-512)可能是 由联邦机构使用的所有 应用程序使用安全哈希 算法。联邦机构应 停止尽快 实际使用SHA-1数字 签名,数字时间戳和 需要 碰撞性的其他应用程序,并在2010年后必须使用SHA-2 家族的散列函数,这些 应用在2010年之后,联邦机构可能仅对以下应用使用SHA-1 : 基于散列的消息认证 代码(HMAC);密钥推导 函数(KDFs);和随机数 生成器(RNG)。无论使用什么,NIST都鼓励应用程序和 协议设计人员对所有新的 应用程序和协议使用SHA-2 系列散列函数。
你说“摘要函数”;这大概意味着你想用它来计算“长”消息的摘要(不只是像密码那样对短消息进行散列)。这意味着bCrypt和类似的选择已经出来;它们被设计成缓慢地禁止对密码数据库的暴力攻击。 MD5被彻底破坏,而SHA-0和SHA-1太弱了,不能成为好选择。河豚是一种流密码(虽然你可以运行它产生摘要的模式),所以它也不是一个好的选择。
这留下了几个哈希函数系列,包括SHA-2,HAVAL,RIPEMD,WHIRLPOOL等。其中,SHA-2家族是最彻底的密码分析,所以这是我的建议,一般使用。对于典型的应用,我推荐使用SHA2-256或SHA2-512,因为这两种尺寸是最常见的,未来可能会受到SHA-3的支持。
这真的取决于你需要什么。
如果您需要实际的安全性,那么容易发现碰撞的能力会危及您的系统,我会使用类似SHA-256或SHA-512的东西,因为它们受到各个机构的大力推荐。
如果您需要快速的东西,并且可以用来唯一标识某些东西,但是没有实际的安全要求(即,如果发现碰撞,攻击者无法做任何讨厌的事情)然后我会使用类似MD5的东西。
MD4,MD5和SHA-1通过生日攻击法发现碰撞时比预期更容易破裂。 RIPEMD-160非常受欢迎,但只有160位生日攻击只需要2^80个操作,所以它不会永远持续。 Whirlpool具有出色的特性,并且看起来是最强大的,尽管它没有与SHA-256或SHA-512相同的支持 - 从某种意义上说,如果SHA-256或SHA-512存在问题, d更有可能通过正确渠道了解它。
不要将MD5用于任何远程加密。这是一个反腐败校验和现在,*没有*更多。它彻底坏了。忘掉它;没有任何其他散列函数不会做得更好。 – kquinn 2009-03-03 03:00:15
- 1. javascript摘要函数
- 2. Python - 通用函数的最佳位置
- 3. 函数的摘要方法
- 4. iphone检索摘要页面的json数据的最佳实践
- 5. 用于Javascript(JQuery)将数组处理为摘要数据的最佳算法
- 6. 摘要()函数打印不正确
- 7. 针对MySQL的JDBCRealm摘要PASSWORD()函数
- 8. 摘要函子在C++
- 9. 在乳胶'书'中包含摘要的最佳方法?
- 10. MVC中摘要页脚(等)的最佳实践
- 11. JPA什么是获取摘要对象的最佳方式?
- 12. 摘要数据帧
- 13. Codeigniter Restserver - 通过API调用每个函数的最佳实践
- 14. preg_replace函数摘录
- 15. R - 摘要(数据)和摘要(数据$变量)的差异
- 16. 如何在填写ASP.net验证摘要时调用JavaScript函数
- 17. 使用PostgreSQL摘要函数试图检查密码时出错
- 18. 函数参数最佳实践
- 19. Python日志摘要计数
- 20. 如何将参数传递给插入摘要函数
- 21. 使用摘要数据中的R
- 22. 使用lapply的数据集摘要
- 23. 通过摘要代理验证Git
- 24. 摘要Python的
- 25. 摘要生成
- 26. OpenKinect - FreenectDevice摘要?
- 27. Mysql - 摘要表
- 28. 通知用户需要更新的帐户的最佳方式?
- 29. 为函数的Python最佳实践
- 30. 回拨函数和最佳做法
是的,这就是我的意思(应该更清楚)。谢谢。 – Anirvan 2009-03-03 02:23:03