C#中winform程序设计中生成随机码(原创)

很多地方都会用到随机验证码,今天自己心血来潮想根据自己学的知识在winform中实现随机验证码,一下是源代码:

namespace 随机验证码
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void genvalid()
        {
            string valid = string.Empty;
            Random r = new Random();
            int t;
            for (int i = 0; i < 4;i++ )
            {
                t = (int)Math.Floor(r.NextDouble()*10);
                if (t % 2 == 0)
                {
                    Class1 c1 = new Class1();
                    valid += c1.hash();
                }
                else valid += Math.Floor(r.NextDouble()*10).ToString ();
            }
            label1.Text = valid;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            genvalid();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            genvalid();
        }
    }
}

 

 

//一下是另外添加的一个类,用于实现生成从a到z或A到Z的随机字母
namespace 随机验证码
{
    class Class1
    {
        public string  hash()
        {
            int k;
            Hashtable mytable = new Hashtable();
            mytable.Add(0,"a");
            mytable.Add(1, "b");
            mytable.Add(2, "c");
            mytable.Add(3, "d");
            mytable.Add(4, "e");
            mytable.Add(5, "f");
            mytable.Add(6, "g");
            mytable.Add(7, "h");
            mytable.Add(8, "i");
            mytable.Add(9, "j");
            mytable.Add(10, "k");
            mytable.Add(11, "l");
            mytable.Add(12, "m");
            mytable.Add(13, "n");
            mytable.Add(14, "o");
            mytable.Add(15, "p");
            mytable.Add(16, "q");
            mytable.Add(17, "r");
            mytable.Add(18, "s");
            mytable.Add(19, "t");
            mytable.Add(20, "u");
            mytable.Add(21, "v");
            mytable.Add(22, "w");
            mytable.Add(23, "x");
            mytable.Add(24, "y");
            mytable.Add(25, "z");
            mytable.Add(26, "A");
            mytable.Add(27, "B");
            mytable.Add(28, "C");
            mytable.Add(29, "D");
            mytable.Add(30, "E");
            mytable.Add(31, "F");
            mytable.Add(32, "G");
            mytable.Add(33, "H");
            mytable.Add(34, "I");
            mytable.Add(35, "J");
            mytable.Add(36, "K");
            mytable.Add(37, "L");
            mytable.Add(38, "M");
            mytable.Add(39, "N");
            mytable.Add(40, "O");
            mytable.Add(41, "P");
            mytable.Add(42, "Q");

            mytable.Add(43, "R");
            mytable.Add(44, "S");
            mytable.Add(45, "T");
            mytable.Add(46, "U");
            mytable.Add(47, "V");
            mytable.Add(48, "W");
            mytable.Add(49, "X");
            mytable.Add(50, "Y");
            mytable.Add(51, "Z");
            Random r1 = new Random();
            k=r1.Next(52);
            string  c=(string)mytable[k];
            return c;
        }

    }
}

 

检验了一下,能够达到目的,不过似乎不是很好,在一个验证码中有很多相同的数字或字母,比如6ggg,I3II等等,难道是巧合?盼望有高人来指点一下!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值