C#使用伪随机数实现加密用户密码的方法
本文所述实例为使用伪随机数进行用户密码加密,这段代码为核心部分主要代码,需要配合其它的程序实现,感兴趣的读者可以自己进一步加以完善,不费话了,下面列出主要代码:
usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; namespacePRanDataEncrypt { publicpartialclassForm1:Form { publicForm1() { InitializeComponent(); } privatevoidbutton1_Click(objectsender,EventArgse) { if(textBox3.Text!="") { if(DecryptPwd(textBox3.Text)==textBox2.Text) MessageBox.Show("用户登录成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); else MessageBox.Show("用户密码错误!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); } } privatevoidbutton2_Click(objectsender,EventArgse) { textBox1.Text=textBox2.Text=textBox3.Text=string.Empty; textBox2.Focus(); } privatevoidtextBox2_TextChanged(objectsender,EventArgse) { textBox3.Text=EncryptPwd(textBox2.Text); } //定义加密用户密码所用的伪随机数 privatestringrandStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"; #region使用伪随机数加密用户登录密码 ///<summary> ///使用伪随机数加密用户登录密码 ///</summary> ///<paramname="str">用户登录密码</param> ///<returns>加密后的用户登录密码</returns> privatestringEncryptPwd(stringstr) { byte[]btData=Encoding.Default.GetBytes(str); intj,k,m; intlen=randStr.Length; StringBuildersb=newStringBuilder(); Randomrand=newRandom(); for(inti=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)); } returnsb.ToString(); } #endregion #region解密用户登录密码 ///<summary> ///解密用户登录密码 ///</summary> ///<paramname="str">经过加密的用户登录密码</param> ///<returns>解密后的用户登录密码</returns> privatestringDecryptPwd(stringstr) { try { intj,k,m,n=0; intlen=randStr.Length; byte[]btData=newbyte[str.Length/2]; for(inti=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++; } returnEncoding.Default.GetString(btData); } catch{return"";} } #endregion } }