欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

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

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

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 
} 
}