生成验证码图片

设计登录页面的时候,为了实现安全登录,在登录之前需要进行一些必要的验证。无论您在哪个网页上登录账户,往往会伴随着一种验证方法,如:有随机生成带着干扰方式的数字、字母图片;还有一张图片然后其中有一个位置是空的,需要以拼图的形式移动下边的滚动条把缺少的那块移动到空的图片位置;还有在图片上方给出几个物品顺序,在图片中物品比答案多出一个而且顺序也是无序的排列方式,需要按照答案的顺序依次点击图片中的物品,等等多种验证方式。这些验证方式都在为了识别是否是人为操作,防止他人以其他方法获取到重要的个人账户、信息。
在这里插入图片描述
现在我们学习的是上面说的第一种验证方法生成验证码图片,ValidCodeUtils 是一个静态类,在重庆邮件的项目中,我们建了Common、EntityClass两个文件夹,存放我们封装的方法、类。EntityClass存放的是实体类,调用的时候就需要以new关键字去实例化它。而Common文件里面放的是工具类方法,称为公共静态方法,使用时不需要用new去实例化它,直接是类名点方法名就可以调用成功这个方法了,这样减少了内存的消耗。它们在封装定义的时候是有区别的。
public class + 实体类名。这是封装实体类的格式,在需要设计表对象的时候我们就使用实体类。实体类名后面还可以继承其他实体,在方法体里面目前我们大多数都是以设计实体字段为主,如:public + 数据类型 + 字段名称 + { get; set; },也可以写方法,但是格式是public + 数据类型 + 方法名()。
public static class + 方法类名。这是封装静态方法的格式,static就是静态方法的代表,在方法体里面的所有方法格式是public static + 数据类型 + 方法名()。
public static string GetRandomCode(int intLength)
{
string strReturn = string.Empty;
Random random = new Random();
for (int i = 0; i < intLength; i++)
{
char cRerult;
int intRandom = random.Next();
if (intRandom % 3 == 0)
{
cRerult = (char)(0x30 + (intRandom % 10));
}
else if (intRandom % 3 == 1)
{
cRerult = (char)(0x41 + (intRandom % 0x1a));
}
else
{
cRerult = (char)(0x61 + (intRandom % 0x1a));
}
strReturn += cRerult.ToString();
}
return strReturn;
}
生成验证码图片:首先第一个方法是GetRandomCode先获得随机的数字符串,传递一个intLength产生多少位数的参数,Random是C#用来随机生成数字的随机类,进入for循环长度,random.Next随机对象点Next产生一个非负随机整数0到正无穷,再进行判断如果随机数除3得到的余数等于0,Ox30是十六进制的三十加随机数除10取余,再强制转化为char。else if除3余数为1的时候就产大写字母,else就产生小写字母。
如下图:
第二个方法是CreateImage根据字符串创建验证码,先创建图片对象newBitmap让它的长宽为20,38它就相当于一个画板;Graphics是画笔;SolidBrush是画笔的颜色,设为了红色,接着就是设计它的字体样式。random随机生成,一个for循环设计了x1 y1,x2 y2,两个点产生一条线,在图片绘制干扰线。还有一个for循环设计x y产生一个点,是绘制图片的前景干扰点。这些内容需要有在一定的范围内内实现,所以在最外边绘制边框。最后将图片保存到内存流中,再将流内容写入byte数组返回。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值