从ASP.NET 2.0会员中解密'加密&39;密码

 2023-02-16    336  

问题描述

我需要在我的Aspnet_membership表中解密加密(非哈希)密码.在该数据库中,我看到了密码(加密)和密码萨尔特字段,我可以查看我的web.config以查找MachineKey> netryptightekekey(验证=” sha1″解密=” aes”).

).

从ASP.NET 2.0会员中解密'加密&39;密码

注意:我很想使用Hashed密码,但是出于商业原因,我需要能够为会员使用密码,用于SSO进入其他远程系统,因此使用加密(绝对不使用Clear -Yukky!)

鉴于所有这些,肯定有一种方法可以将密码检索为清晰,简单且可读的文本,即解密,但是我在找到任何网站或在stackoverflow上回答我遇到了真正的麻烦(我正在寻找所有网站这里解释了如何完成的”类似问题”和”具有类似标题的问题”).

我已经找到 MENSTERHIPPROVIDER.DECRYPTPASSWORD方法页面,但是我仍然无法确定如何在代码中实际使用它.我还通过Google找到了其他页面,但是大多数密码解密的示例似乎并未考虑到盐和Decrytionkey的考虑.

有人从各自位置选择密码,密码萨尔特和解密键的直接示例,并使用它们来删除ASP.NET 2.0成员加密密码?

推荐答案

创建一个从SQLMembershippRovider继承的类,其中您可以调用解密.

您需要的所有代码可以在 Naveen Kohli的这篇文章:

查看反射器中的代码后,我看到了Microsoft
提供者分两个步骤解密.加密密码实际上是
基本64加密数据的转换.因此,首先将其转换为
base64,然后调用decryptassword方法.我只是做了最简单的
事物.从Microsoft实施中复制了代码,删除了所有
检查它正在这样做,然后使用它.下课是一个例子
类派生的类sqlmembershipprovider的类别的方法
将我的密码返回给定加密密码的清晰文本.

namespace MembershipPasswordRecover
{
    public class NetFourMembershipProvider : SqlMembershipProvider
    {
        public string GetClearTextPassword(string encryptedPwd)
        {
            byte[] encodedPassword = Convert.FromBase64String(encryptedPwd);
            byte[] bytes = this.DecryptPassword(encodedPassword);
            if (bytes == null)
            {
                return null;
            }
            return Encoding.Unicode.GetString(bytes, 0x10, bytes.Length - 0x10);

        }
    }
}

static void Main(string[] args)
{
    var passwordManager = new NetFourMembershipProvider();
    var clearPWd = passwordManager.GetClearTextPassword("encryptedpasswordhere");
    Console.WriteLine(clearPWd);
}

以上所述是小编给大家介绍的从ASP.NET 2.0会员中解密'加密&39;密码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

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

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

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