我需要盐和散列一些密码,以便我可以将它们安全地存储在数据库中。 对于如何最好地使用Linq To SQL来做到这一点,您有任何建议或想法吗?使用Linq To SQL盐渍和散列密码
10
A
回答
25
LINQ to SQL在这种情况下没有多大关联。你可以使用任何你想要的机制,因为你不会在SQL中进行哈希和腌制。
保存密码,将沿着这些路线走的步骤:
- 收到密码为明文,与用户的ID一起。
- 生成(并记住)盐。
- 将盐与密码文本相结合,例如,加上它或追加它。
- 使用散列函数对结果文本进行散列处理
- 将用户ID,散列和盐存储在数据库中。
验证密码就会沿着这些路线走的步骤:
- 收到密码为明文,与用户的ID一起。
- 从提供的用户ID中检索数据库的散列和盐。
- 将盐与提供的密码文本组合在一起。
- 用你的散列函数散列结果文本。
- 将函数的散列与从数据库中检索的散列进行比较。
- 如果它们相同,则提供的密码是正确的。
+0
它是常见为每个密码生成并存储salt,而不是将一个共同的salt与每个收到的密码结合起来?当然,它“似乎”更安全,但是因为盐只是存储在数据库中......只是想知道。 – JMD 2009-02-24 17:24:31
1
3
由于您使用的是.NET和C#,使用可以使用System.Security.Cryptography.SHA512Managed命名空间用于生成盐值和密码哈希
0
如果是用户帐号登录你不想只是盐+密码哈希,您还希望按照RFC2898文档中的PBKDF2使用密钥扩展。
这里是API做你需要使用例子是什么: https://sourceforge.net/projects/pwdtknet
在指定的长度也创建加密随机盐
使用本:http://encrypto.codeplex.com/ – Omu 2010-09-14 08:36:43