吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1966|回复: 6
收起左侧

[其他转载] c# 使用自带Random 随机数生成器来模拟随机生成验证码

[复制链接]
xzcnmb 发表于 2021-10-25 13:31
原理很简单 使用Random 自带生成器 将每次随机生成的数字字母进行拼接之后 用文本框来显示!
具体实现原理和讲解见代码!
[C#] 纯文本查看 复制代码
namespace MP3Player
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Text = "看不清,换一张!";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string c = "";//初始化验证码
            Random s = new Random();//随机数生成器
            for (int i = 0; i < 4; i++)//组成(随机四位0~9数字、大小写字母)
            {
                int b = s.Next(0, 3);//b表示验证码类型,此随机数为0、1、2
                //验证码是数字是字母随机(0表示大写字母,1表示数字,2表示小写字母)
                if (b == 0)//如果类型是大写字母
                {
                    //此处将数字转化为字符型,将字符转化为字符串
                    c += ((char)s.Next(65, 91)).ToString();
                }
                if (b == 1)//如果是数字
                {
                    //将数字转化为字符串
                    c += s.Next(0, 10).ToString();
                }
                if (b == 2)//如果是小写字母
                {
                    c += ((char)s.Next(97, 122)).ToString();
                }
                label1.Text = c;//将c中的值赋给label文本
                //设置label中字体颜色
                label1.ForeColor = Color.FromArgb(s.Next(0, 255), s.Next(0, 255), s.Next(0, 255));
                //设置label中字体大小
                label1.Font = new Font("黑体", s.Next(10, 30));
            }
        }

    }
}

Random 官方文档上面有很多实例

Random 官方文档上面有很多实例
HNDBBPR9PNQ`CO(OE[$YTLQ.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

快乐小风 发表于 2021-10-25 13:38
是不是数字转ASCII
 楼主| xzcnmb 发表于 2021-10-25 13:44

不存在转码 是将随机生成的字母和数字拼接到一起  显示到标签
陈腔滥调的K 发表于 2021-10-25 13:56
[C#] 纯文本查看 复制代码
label1.Text = c;//将c中的值赋给label文本
                //设置label中字体颜色
                label1.ForeColor = Color.FromArgb(s.Next(0, 255), s.Next(0, 255), s.Next(0, 255));
                //设置label中字体大小
                label1.Font = new Font("黑体", s.Next(10, 30));

这部分应该写在for外面
 楼主| xzcnmb 发表于 2021-10-25 14:01
陈腔滥调的K 发表于 2021-10-25 13:56
[mw_shl_code=csharp,true]label1.Text = c;//将c中的值赋给label文本
                //设置label中字体 ...

for 循环里面 写的是随机数的生成     都可以 只不过这样写业务逻辑清楚一些!
陈腔滥调的K 发表于 2021-10-25 14:05
xzcnmb 发表于 2021-10-25 14:01
for 循环里面 写的是随机数的生成     都可以 只不过这样写业务逻辑清楚一些!

额,只是简单玩玩的话是可以的,都能达到最终效果;不过会多做几次无意义的工作,耗费性能,想要提高编程水平还是得注意下写法的
Hacker-无心 发表于 2021-10-25 16:58
验证码这东西 都不需要咱自己造了,,网上现成的多,,,自己造的毫无安全难度可言,,
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表