LINQ to SQL在这种情况下没有太多相关性。您可以使用任何机制,因为您不会在SQL中进行哈希和盐处理。 保存密码的步骤如下: 接收明文密码以及用户ID。 生成(并记住)盐。 将盐与密码文本结合,例如在其前面或后面添加盐。 使用您的哈希函数对生成的文本进行哈希处理。 将用户ID、哈希值和盐存储在数据库中。 验证密码的步骤如下: 接收明文密码以及用户ID。 从数据库中检索提供的用户ID的哈希值和盐。 将提供的密码文本与盐结合。 使用您的哈希函数对生成的文本进行哈希处理。 将哈希函数生成的哈希值与从数据库检索到的哈希值进行比较。 如果它们相等,则提供的密码正确。
如果是用于用户账户登录,你不仅需要使用盐值+密码哈希,还需要按照RFC2898文档中的PBKDF2使用密钥拉伸。这里有一个API可以满足你的需求,并提供了示例用法: https://sourceforge.net/projects/pwdtknet 同时,它还可以创建指定长度的加密随机盐。