C# MD5“敏感信息“ 数据库用户密码 的加密
Posted 小马的棺材板
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# MD5“敏感信息“ 数据库用户密码 的加密相关的知识,希望对你有一定的参考价值。
MD5:
一句话带过,就是加密信息的,如:用户密码,卡密,位置信息,IP地址等等
命名空间:
using System.Security.Cryptography;
为什么要加密?
如果数据库别人渗透进来了,用户的密码没有加密而是明文显示,就会造成数据泄露,而进行加密了,提高安全性
可以看见一两行没使用加密而是明文显示
可以解密吗?
可以使用这个网站进行解密,但是稍微复杂一点就解不了,
MD5解密
MD5加密
string s = "xmgdgcb147";
//需要加密的字符串
MD5 m = MD5.Create();
//创建md5加密
byte[] b = Encoding.UTF8.GetBytes(s);
byte[] md = m.ComputeHash(b);
//返回的也是一个二进制数组
string str =string .Empty;
for (int i = 0; i <= md.Length - 1; i++)
{
str = md[i].ToString("x");
//x代表16进制
}
Console.WriteLine(str);
因为他需要一个字节数组,所以需要把字符串转成字节数组,返回的也是一个二进制字节数组,然后使用循环把加密好的数组转成16进制
使用 解密 网站测试
可以看见稍微复杂一点就解不出来
数据库对用户密码的加密:
思路:
注册时先把用户输入的密码加密后插入数据库,
登录时把用户输入的密码转成md5 然后进行比对
注册:
Regex a = new Regex(@"[\\S]");
MatchCollection bb = a.Matches(textBox1.Text);
string str = "";
foreach (Match c in bb)
{
str += c.ToString();
}
if (str == "")
{
MessageBox.Show("用户名不符合规范");
label6.Text = b.Next(100000, 900000).ToString();
return;
}
if (textBox2.TextLength < 6) {
MessageBox.Show("密码必须大于六位数");
return;
}
if (textBox3.Text != label6.Text)
{
label6.Text = b.Next(100000, 900000).ToString();
return;
}
if (textBox2.Text != textBox5.Text)
{
MessageBox.Show("两次密码不一致");
return;
}
SqlConnectionStringBuilder sql = new SqlConnectionStringBuilder();
sql.UserID = "dpc520";
sql.Password = "123456aa";
sql.DataSource = "XTZJ-20210205BO";
sql.InitialCatalog = "master";
SqlConnection sql2 = new SqlConnection(sql.ToString());
MatchCollection bbb = a.Matches(textBox2.Text);
string strr = "";
foreach (Match cc in bbb)
{
strr += cc.ToString();
}
if (strr == "")
{
MessageBox.Show("密码不符合规范");
label6.Text = b.Next(100000, 900000).ToString();
return;
}
char xb;
if (radioButton1.Checked)
{
xb = '男';
}
else {
xb = '女';
}
if (bt ==1)
{
pic = Convert.ToBase64String(arr);
}
else {
MessageBox.Show("请上传头像");
return;
}
MD5 m = MD5.Create();
byte[] md = Encoding.UTF8.GetBytes(strr);
byte[] hf = m.ComputeHash(md);
string g = string.Empty;
for (int i=0;i<=hf.Length-1;i++)
{
g += hf[i].ToString("x");
}
sql2.Open();
SqlCommand 查询账号 = new SqlCommand("select * from user1 where userid = '"+ label1.Text + "'", sql2) ;
SqlDataReader 查询 = 查询账号.ExecuteReader();
while (查询.Read()) {
if ( 查询["userid"].ToString().Length >=1 )
{
MessageBox.Show("账号已存在");
return;
}
}
查询.Close();
查询.Dispose();
string sql3 = "INSERT INTO user1 VALUES('正常','" + label1.Text + "','" + textBox1.Text + "','" + g + "','"+0+"','"+xb+"','"+pic+"')";
SqlCommand sql4 = new SqlCommand(sql3, sql2);
SqlDataReader sql5 = sql4.ExecuteReader();
MessageBox.Show("注册成功:"+label1.Text+" \\r\\n " +"密码:"+strr);
try
{
MessageBox.Show("账号已保存到您的桌面");
// string path = @"C:\\Users\\Administrator\\Desktop\\DY圈账号:"+ label1.Text + "";
File.Create(@"C:\\Users\\Administrator\\Desktop\\" + label1.Text + "");
}
catch
{
}
登录界面 f = new 登录界面(label1.Text);
f.Show();
// MessageBox.Show(a.ToString());
this.Hide();//隐藏现在这个窗口
this.Close();
sql2.Close();
sql5.Close();
sql2.Dispose();
sql5.Dispose();
登录:
```csharp
try
{
a.Password = "123456aa";
a.UserID = "dpc520";
a.DataSource = "XTZJ-20210205BO";
a.InitialCatalog = "master";
b = new SqlConnection(a.ToString());
b.Open();
string s = user.Text;
string[] g = s.Split('-','\\'');
foreach (string f in g)
{
s = f;
}
// MessageBox.Show(s);
MD5 m = MD5.Create();
byte[] md = Encoding.UTF8.GetBytes(password.Text);
byte[] hf = m.ComputeHash(md);
for (int i = 0; i <= hf.Length - 1; i++)
{
pass += hf[i].ToString("x");
}
// MessageBox.Show(pass);
string sql = "SELECT * FROM user1 WHERE userid = '" + s+ "' AND password='" + pass + "'";
SqlCommand d = new SqlCommand(sql, b);
SqlDataReader du = d.ExecuteReader();
string l = string.Empty;
user jm =new user();
while (du.Read())
{
l = du["userid"].ToString() + du["password".ToString()];
if (du["账号状态"].ToString()== "冻结 ")
{
MessageBox.Show("账号被封禁");
password.Clear();
du.Close();
du.Dispose();
b.Close();
b.Dispose();
return;
}
}
du.Close();
if (l == string.Empty)
{
MessageBox.Show("账号或密码错误");
pass = string.Empty;
password.Clear();
return;
}
try
{
FileStream file = new FileStream(@path, FileMode.Create);
user name = new user();
{
name.user1 = this.user.Text.Trim();
name.password1 = this.password.Text.Trim();
}
BinaryFormatter c = new BinaryFormatter(); //二进制格式化器
c.Serialize(file, name);
file.Close();
file. Dispose();
}
catch {
}
string 窗口id查询 = "select * from user1 where userid ='"+user.Text+ "'";
SqlCommand 窗口id创建 = new SqlCommand(窗口id查询, b);
SqlDataReader 窗口id执行 = 窗口id创建.ExecuteReader();
while (窗口id执行.Read()) {
jmuser = 窗口id执行["username"].ToString();
}
窗口id执行.Close();
b.Close();
b.Dispose();
窗口id执行.Dispose();
登录成功界面 a2 = new 登录成功界面();
a2.Show();
this.Hide();//隐藏现在这个窗口
}
catch
{
}
效果:
注册:
登录:
登录成功:
数据库后台:
成功!
纯手打,点个赞呗~
以上是关于C# MD5“敏感信息“ 数据库用户密码 的加密的主要内容,如果未能解决你的问题,请参考以下文章