【数据库原理实验进度报告】验证码、注册与操作日志

这篇博客主要介绍了数据库原理实验的最新进展,包括登录界面的优化,使用MD5加密增强密码安全性,以及验证码的实现。登录优化通过验证码提升了安全性,验证码采用文本框格式,虽然存在一些限制,但实现了基本功能。注册功能也已实现,同时提到权限识别和操作日志的重要性。接下来的计划是增加用户菜单、窗口分离操作和可能的选课功能。
摘要由CSDN通过智能技术生成

时隔好久,我又回来报告进度了。最近时间依旧紧张,所以进度有限,等到这周过去,大部分课就会结课了,数学模型的大作业也应该做完了,那时进度应该会快起来了吧……
先来接续上一篇博客的内容,关于分窗操作的办法,我确实想到了,利用线程锁将当前进程锁定,应该就可以解决不少问题,不过在实际写代码中遇到了一点问题,目前正在修改,这次暂时不贴出来了。
另一方面,登录的优化和注册的实现终于有了进展,就和大家汇报一下吧。

登录优化

优化后的界面
在这里插入图片描述
密码使用了MD5加密来确保安全性
需要新建一个MD5加密函数

public static string EncryptWithMD5(string source)
        {
   
            byte[] sor = Encoding.UTF8.GetBytes(source);
            MD5 md5 = MD5.Create();
            byte[] result = md5.ComputeHash(sor);
            StringBuilder strbul = new StringBuilder(40);
            for (int i = 0; i < result.Length; i++)
            {
   
                strbul.Append(result[i].ToString("x2"));//加密结果"x2"结果为32位,"x3"结果为48位,"x4"结果为64位
            }
            return strbul.ToString();
        }

然后修改登录时的密码验证

string password = EncryptWithMD5(textBoxPassWord.Text.Trim());

没错,只是一句简单的修改就完成了,并不复杂

验证码
本次的重头戏之一,为了实现一个还算能用的验证码,可是花了我不少心思
注意:我的验证码采用了文本框格式,也因此有不少缺陷,比如字符都挤在一起,没有干扰用的黑点与斜线,验证码的排列方向只能水平等等。但是如果利用图片格式需要很多复杂的绘图指令和复合操作,我还没能完全吃透,如果日后有时间的话,我会回来修改的……
首先新建一个文本框,格式设计为不启用(防止选中然后复制),初始背景色选一个喜欢的就好,建议为浅色,防止验证码不明显。
在这里插入图片描述
记住,一定不要给文本框初始值来做验证码
这样第一个验证码就是固定的,设置验证码也就失去了意义。第一个验证码必须和刷新后的验证码一样,都是随机生成的。
为此我们需要在登录窗口类中新建一些变量:

private string Scode;//存放验证码
        private static char[] constant =
     {
   
        '0','1','2','3','4','5','6','7','8','9',
        'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
      };//验证码单个字符的可能取值

接下来是生成验证码的函数

public void Randomcode()
        {
   
            int i = 0;
            Scode = "";
            Random rand = new Random();
            for (i = 0; i < 4; i++)
            {
   
                Scode += constant[rand.Next(0, 57)];
            }
            textBox1.BackColor = Color.FromArgb(rand.Next(200,225), rand.Next(200, 225), rand.Next(200, 225));
            textBox1.ForeColor = Color.FromArgb(rand.Next(0,100), rand.Next(0, 100), rand.Next(0, 100));
            textBox1.Text = Scode;
            i = rand.Next(1, 3);
            if(i==1)
            {
   
                textBox1.TextAlign = HorizontalAlignment.Center;
            }
            if (i == 2)
            {
   
                textBox1.TextAlign = HorizontalAlignment.Left;
            }
            if (i == 3)
            {
   
                textBox1.TextAlign = HorizontalAlignment.Right;
            }
        }

原理很简单,从预设的取值类当中随机取出四个即可。但是注意事项却有不少。
首先,文本框的背景颜色与验证码的字体颜色应该是随机的,但是完全随机又会让验证码难以识别(比如黑色的背景,黑色的字),背景颜色应该尽可能浅,验证码则尽可能深,在查阅了相关资料后,我进行了代码中的范围限制。
还有,我使用了一种简陋的办法,即改变文本对齐方式,来实现验证码的移动,只不过效果不是很明显就是了。

验证码函数制作完成后,一定要记住在必要的时候进行调用:
登录窗口创建的时候

public Login()
        {
   
            InitializeComponent();
            this.Randomcode()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值