QMK*_*vin 16 asp.net encryption passwords asp.net-membership .net-2.0
我需要解密位于我的aspnet_Membership表中的加密(非哈希)密码.在该数据库中我看到的密码(加密)和PasswordSalt领域,我可以看看我的web.config找到的machineKey> decryptionKey(验证="SHA1"解密="AES").
注意:我很乐意使用Hashed密码,但出于商业原因,我需要能够使用会员密码,SSO进出其他远程系统,因此使用加密(绝对不使用Clear - yukky!)
鉴于这一切,一定有找回密码的清除,平原和可读文本,即解密的方式,但我有真正的麻烦找到任何网站,或回答有关计算器(和我看所有的"相似问题"和"问题与"这里"相似的标题,解释了如何做到这一点.
我找到了MembershipProvider.DecryptPassword方法页面,但我仍然无法弄清楚如何在我的代码中实际使用它.我还通过谷歌发现了其他页面,但是大多数密码解密的例子似乎都不考虑salt和decrytionKey.
有没有人有一个直接的例子,从各自的位置选择密码,passwordsalt和decryptionkey,并使用它们来解密ASP.NET 2.0会员加密密码?
Ada*_*SFT 13
创建一个继承自SqlMembershipProvider的类,并在其中调用解密.
您需要的所有代码都可以在Naveen Kohli的文章中找到:
在查看反射器中的代码后,我看到Microsoft提供程序分两步解密.加密密码实际上是加密数据的Base64转换.首先它将它从Base64转换回来,然后调用DecryptPassword方法.我做了最简单的事情.从Microsoft实现复制代码,删除它正在执行的所有检查,然后使用它.下面的类是一个类派生形式SqlMembershipProvider的示例,其中的方法只是以明文形式为给定的加密密码返回密码.
Run Code Online (Sandbox Code Playgroud)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); }
| 归档时间: |
|
| 查看次数: |
21369 次 |
| 最近记录: |