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

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

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

  2021-03-19 我要评论
想了解C#使用伪随机数实现加密用户密码的方法的相关内容吗,在本文为您仔细讲解C#使用伪随机数加密用户密码的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:C#,伪随机数,加密,密码,下面大家一起来学习吧。

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

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

猜您喜欢

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们