在两种哈希算法中,SHA和MD5,哪一种最容易在.NET MVC 3中实现。简单来说,我的意思是实现的开销和时间最少。
我知道这个论点将是安全性并不重要,但我仍然对它会是哪一个感兴趣。如果有另一个高度使用的更容易,那就是它?
我不熟悉使用哈希算法进行站点身份验证,所以我想确保在进行研究之前先进行研究。
此外,如果.NET或MVC内置了对任何东西的支持,它会是什么?
谢谢。
答案 0 :(得分:3)
请参阅System.Security.Cryptography.MD5和System.Security.Cryptography.SHA256。
可以找到.NET框架中已实现的哈希算法列表here。
您还应该查看this blog post,了解有关推广自己的身份验证方案的一些提示。
Bcrypt通常是散列密码的好选择,并且它有一个.NET端口here。但是,我不确定该项目是否有任何外部代码审查,因此可能值得四处询问。
关于为什么bcrypt是存储密码的首选方法的优秀帖子:http://codahale.com/how-to-safely-store-a-password/。
关于最小开销,这应该永远不会成为一个问题。我绝不希望使用最弱的哈希算法存储我的密码,因为网站或服务需要“减少开销”。
答案 1 :(得分:1)
如评论中所述,SHA和MD5不是加密。但是,如果您需要单向哈希,其中一个SHA变体是最安全的。
如果您通过“最小开销”表示哪一个最容易在代码中实现,则它们是相同的。在.NET中,SHA和MD5共享相同的基类HashAlgorithm
,您可以对其进行编程。
如果您通过“最小开销”表示计算时间或空间消耗,则MD5是赢家。但请记住,MD5比任何SHA变体弱很多,对于今天的任何实际应用,时间和空间都不太可能重要。
答案 2 :(得分:1)
我不想在我的网站上存储密码 - 无论是使用哈希还是使用哈希或其他方式。如果您使用OpenID提供程序或变体(如Mozilla Labs的新BrowserID),我相信您甚至可能会更好。