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 } }
上一篇: MySQL内存及虚拟内存优化设置参数