0

我有一个包含表的实体框架模型

apsnet_Users
aspnet_Memberships 

我想检查 WCF 库中用户名和密码的验证如何实现

我应该添加会员资格app.config吗,如何实现这样的目标?

此致

4

2 回答 2

4

一个基本的(但安全的)用户名/密码数据库应该有这样的列:

UserName     - Text
PasswordSalt - Binary
PasswordHash - Binary

用户名可以存储为纯文本。

盐是一个随机的字节串,最好至少和散列一样长。

密码哈希是密码+盐的二进制哈希。

以下是为用户提供新密码时的基本过程。我将使用 SHA-256 哈希作为示例。

  1. 将所需的密码转换为字节数组。
  2. 使用 CSPRNG 生成另一个 32 字节长的字节数组。这是盐。
  3. 将盐添加到密码字节数组的末尾。
  4. 使用 SHA-256 对密码进行哈希处理。
  5. 将盐存储在数据库中。
  6. 将密码哈希存储在数据库中。

然后当用户在登录时输入密码时,这就是过程。

  1. 在数据库中查找用户。
  2. 将输入的密码转换为字节数组。
  3. 将数据库中的盐添加到密码字节数组的末尾。
  4. 使用 SHA-256 对密码进行哈希处理。
  5. 如果哈希与数据库中的哈希匹配,则密码正确。

这种密码验证方法是高安全性应用程序的首选方法。它并不慢,也不是很难实现。最好的事情是,您可以将整个密码表提供给您喜欢的任何人,他们最多只能选择一个用户并开始猜测密码。

于 2012-06-04T15:44:30.090 回答
0

我没有使用实体框架和其他验证算法,所以我直接使用了 SQL 成员资格,Microsaoft 加密方式很难检索

于 2012-06-06T18:30:25.213 回答