MVC项目的验证码和AES加密方式的引用理解
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术: MVC
作者:刘铭聪
撰写时间:2019/8/15
验证码是用户验证的一种方式,它是通过电脑随机生成的,只由数字与字母组成(输入时可忽略大小写);而加密方式的使用则是保障用户账户安全的一种方法:用户输入的密码会形成一个特殊的加密字符串与数据库中密码形成的加密字符串比较;输入的验证码和密码与数据形成的验证码和数据库中的密码相同则登录成功,反之则登录失败以此来保障用户的安全;
1.验证码的引用:(1)在using那块区域引用验证码所在的文件链接,
所在位置:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150142514.png#pic_center)
引用链接:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150155579.png#pic_center)
(2)然后再建立一个设置验证码长度和图片的类;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150212568.png#pic_center)
(3)之后再建立一个类来判断用户输入的验证码和密码是否与session中的验证码(忽略大小写)和数据库的密码相同;
检查用户输入验证码的正确
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150231479.png#pic_center)
(4)验证用户输入的验证码与session中的验证码是否相同
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150244837.png#pic_center)
(5)验证用户输入的工号和密码是否匹配
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150313269.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B1cGxlbXVzaWM=,size_16,color_FFFFFF,t_70#pic_center)
2.验证码的理解(ValidCodeUtils):
(1)验证码的程序引用:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150330118.png#pic_center)
(2)验证码的类为公共静态: public static class意为公共静态类, ValidCodeUtis为验证码的类名:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020081815035935.png#pic_center)
(3)建立一个类获取随机字符串,随机数的长度(int intLength):
声明局部变量获取随机数,再通过for 里面的局部变量(intRandom)设置产生一个非负随机整数和局部变量(cRerult)获取产生的验证码,并根据当前随机数来确定字符串
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150414173.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B1cGxlbXVzaWM=,size_16,color_FFFFFF,t_70#pic_center)
(4)根据生成的随机字符串创建验证码(生成验证码图片):
验证图片的形成:①通过局部变量(newBitmap)新增验证图片,②通过局部变量(g)获取验证图片的背景颜色,③在通过局部变量(solidBrush)设置验证码显示的颜色,④通过for里面的局部变量(random)绘制干扰线和前景干扰点,⑤设置验证图片边框的长度、宽度以及边框颜色
⑥将形成的验证码图片转化保存在内存流中,⑦将内存流中的内容写入byte数组返回
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150430495.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B1cGxlbXVzaWM=,size_16,color_FFFFFF,t_70#pic_center)
3.AES加密方式的理解:
(1)加密方式引用的程序集:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150448259.png#pic_center)
(2)获取密钥:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150456526.png#pic_center)
(3)获取向量:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020081815050576.png#pic_center)
(4)AES加密(参数为字节( byte[] )类型):被加密的明文
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150518767.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B1cGxlbXVzaWM=,size_16,color_FFFFFF,t_70#pic_center)
(5)AES解密(参数为字节( byte[] )类型):被解密的明文
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150621407.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B1cGxlbXVzaWM=,size_16,color_FFFFFF,t_70#pic_center)
(6)AES加密成功(参数是字符串(string)类型):明文字符串
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150634200.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B1cGxlbXVzaWM=,size_16,color_FFFFFF,t_70#pic_center)
(7)AES解密失败(参数是字符串(string)类型):明文字符串
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150646397.png#pic_center)
(8)AES解密:密文字符串
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150701177.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B1cGxlbXVzaWM=,size_16,color_FFFFFF,t_70#pic_center)
(9)AES解密失败:密文字符串
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150712145.png#pic_center)
(10)256位AES加密(算法):
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150720683.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B1cGxlbXVzaWM=,size_16,color_FFFFFF,t_70#pic_center)
(11)256 位AES解密:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818150745698.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B1cGxlbXVzaWM=,size_16,color_FFFFFF,t_70#pic_center)
初来乍到,请多多指教,大神勿喷。