xzcnmb 发表于 2021-10-25 13:31

c# 使用自带Random 随机数生成器来模拟随机生成验证码

原理很简单 使用Random 自带生成器 将每次随机生成的数字字母进行拼接之后 用文本框来显示!
具体实现原理和讲解见代码!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));
            }
      }

    }
}

快乐小风 发表于 2021-10-25 13:38

是不是数字转ASCII

xzcnmb 发表于 2021-10-25 13:44

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

不存在转码 是将随机生成的字母和数字拼接到一起显示到标签

陈腔滥调的K 发表于 2021-10-25 13:56

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
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

验证码这东西 都不需要咱自己造了,,网上现成的多,,,自己造的毫无安全难度可言,,
页: [1]
查看完整版本: c# 使用自带Random 随机数生成器来模拟随机生成验证码