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

  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();
        }
        /// 
        ///  AES 加密
        /// 
        /// 明文(待加密)
        /// 密钥
        /// 
        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# 注册功能原来还有这种操作)