我正在看一些我自己没有写过的代码.代码尝试使用SHA512散列密码并仅使用time()盐作为密码.是time()太简单盐这或者是这个代码安全吗?
感谢您的回答和评论.我将在此为新读者总结一下:
random, evenly distributed, high entropy盐?好吧,那么我用随机字符串32 char long替换time()怎么样.可以通过在一组字母表字符上循环32次来生成随机字符串.听起来不错吗?
我查询了msdn和其他资源如何做到这一点,但我想出了没有明确的解决方案.这是我找到的最好的http://blogs.msdn.com/b/shawnfa/archive/2004/04/14/generating-a-key-from-a-password.aspx?Redirected=true
我想使用bcrypt或PBKDF2(看起来与bcrypt相关)在C#中散列密码.我想试验一下我的计算机散列密码需要多少轮.然而,一切似乎都是关于加密,而每个人都谈论哈希.我无法弄清楚.我如何哈希密码?它看起来更像PBKDF2(Rfc2898?)是一个随机数生成器,我使用GetBytes(金额)来选择我的散列大小有多大.
我糊涂了.我究竟如何用bcrypt/PBKDF哈希密码?
我正在创建一个网站,我正在尝试决定如何加密用户密码以将它们存储在SQL数据库中.
我意识到使用简单的md5(密码)是非常不安全的.我正在考虑使用sha512(password.salt),我一直在研究生成有用盐的最佳方法.我阅读了很多文章,说明盐应该尽可能随机地添加熵到哈希,这看起来是个好主意.但:
在数据库中哈希旁边的怪异外观值是不是很明显?如果攻击者可以使用哈希值访问salt,那么它更安全吗?
任何人都有该领域的专业知识?谢谢!
我一直在阅读bcrypt(应用程序视角).考虑使用它来存储我的网站上的密码.
在我阅读的一些内容中,它提出了两种方式:
- 例如1:Bcrypt是来自bcrypt的跨平台文件加密实用程序
- 例如2:bcrypt是一种自适应密码散列算法,它使用Blowfish密钥调度,而不是对称加密算法.从如何安全存储密码
- bcrypt是由Niels Provos和DavidMazières设计的密码自适应加密哈希函数,基于Blowfish密码:来自bcrypt wiki
究竟什么是Bcrypt?
我将使用MD5哈希来存储加密密码.密码长度可以是6到40个字符.存储加密密码所需的数据库列大小是多少.此外,如果40个字符的散列大小非常大,那么20个字符的密码需要多少散列大小?
我FormsAuthentication.HashPasswordForStoringInConfigFile(stringToEncrypt, "MD5");用来生成用于存储在数据库中的哈希.
使用多种算法会使密码更安全吗?(或更少?)
为了清楚起见,我不是在谈论做这样的事情:
key = Hash(Hash(salt + password))
Run Code Online (Sandbox Code Playgroud)
我在谈论使用两个独立的算法并匹配两者:
key1 = Hash1(user_salt1 + password)
key2 = Hash2(user_salt2 + password)
Run Code Online (Sandbox Code Playgroud)
然后要求两者在验证时匹配.我已经看到这被建议作为消除碰撞匹配的一种方式,但我想知道意外后果,例如创建"最薄弱的链接"场景或提供使用户数据库更容易破解的信息,因为这种方法提供的数据多于一把钥匙就可以了.例如,将信息与哈希相结合以更容易地找到它们.此外,如果真的消除了碰撞,理论上你可以强制实际密码而不仅仅是匹配的密码.事实上,你必须要彻底强制系统.
我实际上并没有计划实现这一点,但我很好奇这是否实际上是对单一标准做法的改进key = Hash(user_salt + password).
编辑:
许多好的答案,所以只是为了猜测,这应该是显而易见的回顾,但你确实通过使用两者创建了一个最薄弱的环节,因为两个算法中较弱的匹配可以尝试对抗另一个.例如,如果您使用了弱(快)MD5和PBKDF2,我先强制MD5,然后尝试我发现的任何一个匹配,所以通过让MD5(或其他)实际使情况变得更糟.即使两者都是更安全的设置(例如bcrypt + PBKDF2),你也可以将其中一个暴露给其中一个.
我需要在ASP.NET MVC应用程序中加密URL.
我是否需要在Route Collection中的Global页面中编写代码以加密所有URL?