与Crypto.HashPassword相比,ASP.NET Identity'的密码散列方式。

 2023-02-15    311  

问题描述

每个人都好.我目前正在Xamarin.forms Portable应用程序中创建登录表单.我有一个webformsproject,其中我创建了一个API控制器,它比较了用户键入的用户名和密码与我的数据库中保存的用户名和密码.

使用ASP.NET标识散列保存在我的数据库上的密码.虽然将使用 crypto.hashpassword

与Crypto.HashPassword相比,ASP.NET Identity'的密码散列方式。

如何比较这两个?

如果两个密码匹配,它应该返回”true”否则为false.我现在正在令人困惑的舞台上.希望您能够帮助我.谢谢.

这里是我的一些代码.

logincontroller.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Description;
using WebFormsDemo;
using WebFormsDemo.ViewModel;
using System.Security.Cryptography;
using System.Web.Helpers;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin.Security;
using Microsoft.AspNet.Identity.EntityFramework;


namespace WebFormsDemo.Controllers
{
    public class LoginController : ApiController
    {
        private EBMSEntities db = new EBMSEntities();

        // GET: api/Login


        [Route("api/Login/Search/{username}/{password}")]
        [ResponseType(typeof(List<AspNetUser>))]


        public bool getUsernamePassword(string username, string password)

        {



            var hashedPassword = "";
            hashedPassword = Crypto.HashPassword(password);


            var pass = (from u in db.AspNetUsers
                        where u.UserName.Equals(username)
                        select u.PasswordHash).Take(1);

            string hashpassinDb = Convert.ToString(pass.FirstOrDefault());

            return Crypto.VerifyHashedPassword(hashpassinDb, hashedPassword);




        }

    }
}

推荐答案

密码哈希通常使用来自PasswordHasher类的方法验证验证扫描屏幕进行比较.选中此链接:验证密码与散列密码匹配.

编辑:
根据评论,事实证明,使用Crypto.HashedPassword将产生与数据库中保存的散列值不同的散列值.

您需要提供可以提供清晰密码而不散列的实现.

public class ClearPassword : IPasswordHasher
{
    public string HashPassword(string password)
    {
        return password;
    }
}

将为您提供清除密码,您可以使用输入的密码进行比较.

其他推荐答案

返回crypto.verifyhashedpassword的第二个参数并不是哈希,它意味着纯文本.

以上所述是小编给大家介绍的与Crypto.HashPassword相比,ASP.NET Identity'的密码散列方式。,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33745.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。