Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 散列密码并存储在新数据库中,因为旧数据库已被排除_C#_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

C# 散列密码并存储在新数据库中,因为旧数据库已被排除

C# 散列密码并存储在新数据库中,因为旧数据库已被排除,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,这个register函数是在我填写注册表后调用的,但是我刚刚用一个新创建的sdf数据库替换了默认的mdf数据库,我还想使用md5散列成员的密码。在上面的源代码中,我应该在哪里添加这样的函数 [更新]看起来您正在使用ASP.Net成员API来完成此任务。知道了这一点,我将尝试使您针对此API使用的代码忠实于API的目的。在将密码传递给API之前,我不会对其进行哈希运算。在保存密码之前,我会在MembershipProvider中对其进行散列;在任何密码验证程序之前,我都会对它进行哈希运算。这将把密

这个register函数是在我填写注册表后调用的,但是我刚刚用一个新创建的sdf数据库替换了默认的mdf数据库,我还想使用md5散列成员的密码。在上面的源代码中,我应该在哪里添加这样的函数


[更新]

看起来您正在使用ASP.Net成员API来完成此任务。知道了这一点,我将尝试使您针对此API使用的代码忠实于API的目的。在将密码传递给API之前,我不会对其进行哈希运算。在保存密码之前,我会在MembershipProvider中对其进行散列;在任何密码验证程序之前,我都会对它进行哈希运算。这将把密码哈希实现的细节保留在应用程序代码之外,而应用程序代码只知道如何与ASP.Net成员API接口

因此,您应该了解如何配置您的成员资格提供程序。我不确定默认的SQL MembershipProvider是否能够自动执行此操作,但如果能够,那就太好了。否则,您可能会用自己的实现覆盖SQL成员资格提供程序

参考作为起点[1],它描述了SqlMembershipProvider类


[1]

请不要使用MD5进行密码散列-在这一点上它非常不安全(谷歌搜索会导致很多破解工具)。在执行单向散列之前添加盐也是最佳做法。请从投票率最高的回复中查看:
public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Attempt to register the user
                MembershipCreateStatus createStatus;
                Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

                if (createStatus == MembershipCreateStatus.Success)
                {
                    FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("", ErrorCodeToString(createStatus));
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }