用户密码

hwj_wj_123 2009-03-28 12:01:45
        public virtual byte[] EncryptPassword(byte[] password)
{
Type machineKeySection = typeof(MachineKeySection);
Type[] paramTypes = new Type[] { typeof(bool), typeof(byte[]), typeof(byte[]), typeof(int), typeof(int) };
MethodInfo encryptOrDecryptData = machineKeySection.GetMethod("EncryptOrDecryptData", BindingFlags.Static | BindingFlags.NonPublic, null, paramTypes, null);

return (byte[])encryptOrDecryptData.Invoke(null, new object[] { true, password, null, 0, password.Length });
}


传入同样的参数,但是程序每次重新启动后,调用该函数,得到的结果却不同。
...全文
179 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hernmmy 2009-03-31
  • 打赏
  • 举报
回复
我弄出来的是一样的
qiying1988 2009-03-31
  • 打赏
  • 举报
回复
up
sunchaohuang 2009-03-28
  • 打赏
  • 举报
回复
仔细调试程序就可解决
ustbwuyi 2009-03-28
  • 打赏
  • 举报
回复
跟踪下 bRet = EncryptPassword(bAll);
wuyq11 2009-03-28
  • 打赏
  • 举报
回复
跟踪看看bRet 值是否一致,或换用其他方法看看
hwj_wj_123 2009-03-28
  • 打赏
  • 举报
回复
我跟踪过,没看出什么问题
hwj_wj_123 2009-03-28
  • 打赏
  • 举报
回复

public string EncodePassword(string pass, string salt)
{
byte[] bIn = Encoding.Unicode.GetBytes(pass);
byte[] bSalt = Convert.FromBase64String(salt);
byte[] bAll = new byte[bSalt.Length + bIn.Length];
byte[] bRet = null;

Buffer.BlockCopy(bSalt, 0, bAll, 0, bSalt.Length);
Buffer.BlockCopy(bIn, 0, bAll, bSalt.Length, bIn.Length);


bRet = EncryptPassword(bAll);
return Convert.ToBase64String(bRet);
}

这是加密函数
zzxap 2009-03-28
  • 打赏
  • 举报
回复
贴加密函数看看?向量不同结果也不同
ustbwuyi 2009-03-28
  • 打赏
  • 举报
回复
跟踪一下,看是否内部调用的函数定义了Random之类的
啊兵 2009-03-28
  • 打赏
  • 举报
回复
关注一下!貌似我弄出来的是一样的
hwj_wj_123 2009-03-28
  • 打赏
  • 举报
回复
程序每次重新启动后,我的不一样
cnidb 2009-03-28
  • 打赏
  • 举报
回复
我就试了一下。
每次都一样;
结果都是S8r7f+ps1tXstGrhGxi38ZKcz27+zBZzfFxqzs4TohR5enbm2tm+9fD7eAT2YXvF
hwj_wj_123 2009-03-28
  • 打赏
  • 举报
回复

using System.Web.Configuration;
using System.Reflection;


private void button1_Click(object sender, EventArgs e)
{
//User user=Users.GetUser("10000");
MessageBox.Show(EncodePassword("51aspx.com", "Ehk/gwOk7mpqna7M/8hc5g=="));
}

public string EncodePassword(string pass, string salt)
{
byte[] bIn = Encoding.Unicode.GetBytes(pass);
byte[] bSalt = Convert.FromBase64String(salt);
byte[] bAll = new byte[bSalt.Length + bIn.Length];
byte[] bRet = null;

Buffer.BlockCopy(bSalt, 0, bAll, 0, bSalt.Length);
Buffer.BlockCopy(bIn, 0, bAll, bSalt.Length, bIn.Length);

bRet = EncryptPassword(bAll);
return Convert.ToBase64String(bRet);
}
public virtual byte[] EncryptPassword(byte[] password)
{
Type machineKeySection = typeof(MachineKeySection);
Type[] paramTypes = new Type[] { typeof(bool), typeof(byte[]), typeof(byte[]), typeof(int), typeof(int) };
MethodInfo encryptOrDecryptData = machineKeySection.GetMethod("EncryptOrDecryptData", BindingFlags.Static | BindingFlags.NonPublic, null, paramTypes, null);

return (byte[])encryptOrDecryptData.Invoke(null, new object[] { true, password, null, 0, password.Length });
}


传入同样的参数,但是程序每次重新启动后,调用该函数,得到的结果却不同。
各位帮我看看,代码拷入试试
stonehy520 2009-03-28
  • 打赏
  • 举报
回复
还有这种问题
关注

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧