当前位置: 移动技术网 > IT编程>开发语言>c# > C#使用伪随机数实现加密用户密码的方法

C#使用伪随机数实现加密用户密码的方法

2019年07月18日  | 移动技术网IT编程  | 我要评论

本文所述实例为使用伪随机数进行用户密码加密,这段代码为核心部分主要代码,需要配合其它的程序实现,感兴趣的读者可以自己进一步加以完善,不费话了,下面列出主要代码:

using system; 
using system.collections.generic; 
using system.componentmodel; 
using system.data; 
using system.drawing; 
using system.linq; 
using system.text; 
using system.windows.forms; 
namespace prandataencrypt 
{ 
public partial class form1 : form 
{ 
public form1() 
{ 
initializecomponent(); 
} 
private void button1_click(object sender, eventargs e) 
{ 
if (textbox3.text != "") 
{ 
if (decryptpwd(textbox3.text) == textbox2.text) 
messagebox.show("用户登录成功!", "提示", messageboxbuttons.ok, messageboxicon.information); 
else 
messagebox.show("用户密码错误!", "错误", messageboxbuttons.ok, messageboxicon.error); 
} 
} 

private void button2_click(object sender, eventargs e) 
{ 
textbox1.text = textbox2.text = textbox3.text = string.empty; 
textbox2.focus(); 
} 

private void textbox2_textchanged(object sender, eventargs e) 
{ 
textbox3.text = encryptpwd(textbox2.text); 
} 

//定义加密用户密码所用的伪随机数 
private string randstr = "abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz"; 
#region 使用伪随机数加密用户登录密码 
/// <summary> 
/// 使用伪随机数加密用户登录密码 
/// </summary> 
/// <param name="str">用户登录密码</param> 
/// <returns>加密后的用户登录密码</returns> 
private string encryptpwd(string str) 
{ 
byte[] btdata = encoding.default.getbytes(str); 
int j, k, m; 
int len = randstr.length; 
stringbuilder sb = new stringbuilder(); 
random rand = new random(); 
for (int i = 0; i < btdata.length; i++) 
{ 
j = (byte)rand.next(6); 
btdata[i] = (byte)((int)btdata[i] ^ j); 
k = (int)btdata[i] % len; 
m = (int)btdata[i] / len; 
m = m * 8 + j; 
sb.append(randstr.substring(k, 1) + randstr.substring(m, 1)); 
} 
return sb.tostring(); 
} 
#endregion 
#region 解密用户登录密码 
/// <summary> 
/// 解密用户登录密码 
/// </summary> 
/// <param name="str">经过加密的用户登录密码</param> 
/// <returns>解密后的用户登录密码</returns> 
private string decryptpwd(string str) 
{ 
try 
{ 
int j, k, m, n = 0; 
int len = randstr.length; 
byte[] btdata = new byte[str.length / 2]; 
for (int i = 0; i < str.length; i += 2) 
{ 
k = randstr.indexof(str[i]); 
m = randstr.indexof(str[i + 1]); 
j = m / 8; 
m = m - j * 8; 
btdata[n] = (byte)(j * len + k); 
btdata[n] = (byte)((int)btdata[n] ^ m); 
n++; 
} 
return encoding.default.getstring(btdata); 
} 
catch { return ""; } 
} 
#endregion 
} 
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网