//建个实例
var smp = new SqlMembershipProvider();
//反射出生成盐巴的办法
var GenerateSalt = typeof(SqlMembershipProvider).GetMethod("GenerateSalt", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
//反射出编码密码的办法
var EncodePassword = typeof(SqlMembershipProvider).GetMethod("EncodePassword", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
//用创建的实例生成一个密码,像这样的:ut_U6fX1hUK^Ig
var pwSrc = smp.GeneratePassword();
//生成一个盐巴,像这样的:m1mFOFC2wj4IEwQ0FtHs7g==
var salt = GenerateSalt.Invoke(smp, new object[] { });
//用盐巴给密码调味儿:),像这样的:BtU4iI3BZ6Zomfu8WRgrAIeMvS9FoudK87aNSpUKem9p/vbhZVKZld+vy0ktsAe6
var pwDest = EncodePassword.Invoke(smp, new object[] { pwSrc, 2, salt });
SqlMembershipProvider是System.Web下的类
2是密码格式中的Encrypted,其它两种分别是Clear(0), Hashed(1)
注意反射internal方法的时候要用:System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance 组合,
只用一个,是反射不出来的哦
转载请注明出处http://asterzhao.cnblogs.com
浙公网安备 33010602011771号