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“敏感信息“ 数据库用户密码 的加密的主要内容,如果未能解决你的问题,请参考以下文章

移动端安全 - 安卓Android - 漏洞修复方案整理

Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

WEB—加密算法

JAVA数据加密

JAVA数据加密

JAVA数据加密