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);