Asp.net core 在.net Core中加密类似密码的表单身份验证

Asp.net core 在.net Core中加密类似密码的表单身份验证,asp.net-core,hash,passwords,forms-authentication,Asp.net Core,Hash,Passwords,Forms Authentication,我有一个运行只读成员资格提供商的旧应用程序。我的任务是创建一个管理页面,帮助添加/更改/删除此应用程序中的用户。会员资格提供商使用表单身份验证,我无法使用,因为我的管理应用程序位于.net Core中。我正在尝试对他们使用FormsAuthentication进行加密的方式进行反向工程,到目前为止我已经做到了: 它们使用: FormsAuthentication.HashPasswordForStoringInConfigFile(密码,“sha1”).ToLower() 我已将其反向工程为:

我有一个运行只读成员资格提供商的旧应用程序。我的任务是创建一个管理页面,帮助添加/更改/删除此应用程序中的用户。会员资格提供商使用
表单身份验证
,我无法使用,因为我的管理应用程序位于.net Core中。我正在尝试对他们使用
FormsAuthentication
进行加密的方式进行反向工程,到目前为止我已经做到了:

它们使用:

FormsAuthentication.HashPasswordForStoringInConfigFile(密码,“sha1”).ToLower()

我已将其反向工程为:

(传入字符串pwd)

第三步是“AD626B9D42073B299ECFC664CCB7A8B01F3AF726”,它看起来像旧应用程序的XML用户文件中的密码

我只是好奇,如果我使用这种散列方法(在.net core中工作),散列后的密码是否能够通过
表单身份验证
进行“验证”

到目前为止,我的测试似乎不起作用。有什么想法吗?我做错了吗


编辑:它不是HMASHA1,它是SHA1Cng-我不能使用它,因为它在.NETFramework 4的System.Core中。有些东西。。。在.net core中,我可以用什么来实现这一点?

我想出来了,这是可行的:

using System.Security.Cryptography;

var sha1 = SHA1.Create();
var step1 = Encoding.UTF8.GetBytes(pwd);
var step2 = sha1.ComputeHash(step1);
var step3 = BinaryToHex(step2);   
BinaryToHex
及其相关函数是从
System.Web.Security.CryptoUtil.CryptoUtil


仍然希望能够反向执行此操作并解密密码。

尝试
var newPassword=\u userManager.PasswordHasher.HashPassword(user,newpass)。如果默认哈希程序不适用于您,您也可以参考
using System.Security.Cryptography;

var sha1 = SHA1.Create();
var step1 = Encoding.UTF8.GetBytes(pwd);
var step2 = sha1.ComputeHash(step1);
var step3 = BinaryToHex(step2);