美文网首页
C# 注册功能原来还有这种操作

C# 注册功能原来还有这种操作

作者: Game0ver | 来源:发表于2018-12-09 21:06 被阅读0次
    1. 没学密码学之前,我用C#做出来的注册窗体是这样的


      注册窗体

      数据库是这样的


      数据库1
    2. 学了密码学之后,我用C#做出来的注册窗体是这样的


      注册窗体

      哈哈,其实注册窗体还是一样哒。但是我的数据库就不一般了,往下看↓


      数据库2
    3. emmm,我猜此刻的你,心情是这样的


      image.png

      这......这一串混乱的东东到底是个啥?完完全全看不懂啊!!!哈哈哈,看不懂很正常

    4. 下面我来解释一下那串混乱的,令人头......头大的东西,其本体是这样的


      本体

      感觉很不可思议对不对?哈哈,其实是用了AES给369加密了。学密码学就是要学以致用的嘛,嘿嘿

    5. 代码献上

    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;
    using System.Data.SqlClient;
    using System.Security.Cryptography;
    
    namespace test1
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
            /// <summary>
            ///  AES 加密
            /// </summary>
            /// <param name="str">明文(待加密)</param>
            /// <param name="key">密钥</param>
            /// <returns></returns>
            public static string AesEncrypt(string str, string key) //key是加密的密钥
            {
                if (string.IsNullOrEmpty(str)) return null; //判断待加密的字符串是否为空
                Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
    
                RijndaelManaged rm = new RijndaelManaged
                {
                    Key = Encoding.UTF8.GetBytes(key),
                    Mode = CipherMode.ECB,
                    Padding = PaddingMode.PKCS7
                };
    
                ICryptoTransform cTransform = rm.CreateEncryptor();
                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
                return Convert.ToBase64String(resultArray, 0, resultArray.Length);//返回密文
            }
    
            private void Sure_Click(object sender, EventArgs e)  //确认注册
            {
                string userName = AesEncrypt(account.Text, "12345678876543211234567887654abc");//加密
                string userPwd = AesEncrypt(password.Text, "12345678876543211234567887654abc");//加密
                string strCon = @"data source=(local);initial catalog=test;integrated security=true";
                
                using (SqlConnection conn = new SqlConnection(strCon))
                {
                    conn.Open();
                    if (conn.State == ConnectionState.Open)
                    {
                        string strCmd = "insert into userTable(userName,userPwd) values('{0}','{1}') ";
                        strCmd = string.Format(strCmd, userName, userPwd);
                        SqlCommand cmd = new SqlCommand(strCmd, conn);
                        int i = cmd.ExecuteNonQuery();
                        if (i == 1)
                        {
                            MessageBox.Show("注册成功!");
                            Form1 f1 = new Form1();
                            f1.Show();
                            this.Close();
                        }
                        else
                        {
                            MessageBox.Show("注册失败!");
                        }
                    }
                }
            }
    
            private void Quit_Click(object sender, EventArgs e)  //取消注册
            {
                Form1 f1 = new Form1();
                f1.Show();
                this.Close();
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:C# 注册功能原来还有这种操作

          本文链接:https://www.haomeiwen.com/subject/kqfkhqtx.html