<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        .NET 中英文混合驗證碼實現(xiàn)代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:43:48
        文檔

        .NET 中英文混合驗證碼實現(xiàn)代碼

        .NET 中英文混合驗證碼實現(xiàn)代碼:最終效果如圖: CheckCode.aspx.cs代碼如下 代碼如下:protected void Page_Load(object sender, EventArgs e) { //獲取GB2312編碼頁(表) /**//** * 生成中文驗證驗碼所要使用的方法 * 注,生成中文驗證碼時要改變一下生成驗證碼圖片的寬度 * var
        推薦度:
        導讀.NET 中英文混合驗證碼實現(xiàn)代碼:最終效果如圖: CheckCode.aspx.cs代碼如下 代碼如下:protected void Page_Load(object sender, EventArgs e) { //獲取GB2312編碼頁(表) /**//** * 生成中文驗證驗碼所要使用的方法 * 注,生成中文驗證碼時要改變一下生成驗證碼圖片的寬度 * var

        最終效果如圖:

        CheckCode.aspx.cs代碼如下
        代碼如下:


        protected void Page_Load(object sender, EventArgs e)
        {
        //獲取GB2312編碼頁(表)
        /**//**
        * 生成中文驗證驗碼所要使用的方法
        * 注,生成中文驗證碼時要改變一下生成驗證碼圖片的寬度
        * var imageCode = new System.Drawing.Bitmap((int)Math.Ceiling((code.Length * 22.5)), 23); //定義圖片的寬度和高度
        **/

        //var gb = Encoding.GetEncoding("gb2312");

        /**/////調用函數(shù)產生4個隨機中文漢字編碼
        //object[] bytes = CreateRegionCode(4);

        /**/////根據(jù)漢字編碼的字節(jié)數(shù)組解碼出中文漢字
        //var sbCode = new StringBuilder().Append(gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[]))))
        // .Append(gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[]))))
        // .Append(gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[]))))
        // .Append(gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[]))));
        //CreateCheckCodeImage(sbCode.ToString());

        CreateCheckCodeImage(GenerateCheckCode()); //生成數(shù)字英文所要使用的方法
        }

        生成漢字驗證碼#region 生成漢字驗證碼
        /**//// <summary>
        /// 此函數(shù)在漢字編碼范圍內隨機創(chuàng)建含兩個元素的十六進制字節(jié)數(shù)組,每個字節(jié)數(shù)組代表一個漢字,并將四個字節(jié)數(shù)組存儲在object數(shù)組中。
        /// </summary>
        /// <param name="strLength">代表需要產生的漢字個數(shù)</param>
        /// <returns></returns>
        static object[] CreateRegionCode(int strLength)
        {
        var rBase = new[]
        {
        "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"
        };

        var random = new Random();
        var bytes = new object[strLength];

        /**//*每循環(huán)一次產生一個含兩個元素的十六進制字節(jié)數(shù)組,并將其放入bject數(shù)組中
        每個漢字有四個區(qū)位碼組成
        區(qū)位碼第1位和區(qū)位碼第2位作為字節(jié)數(shù)組第一個元素
        區(qū)位碼第3位和區(qū)位碼第4位作為字節(jié)數(shù)組第二個元素
        */

        for (int i = 0; i < strLength; i++)
        {
        //區(qū)位碼第1位
        var r1 = random.Next(11, 14);
        var str_r1 = rBase[r1].Trim();

        random = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i); //更換隨機數(shù)發(fā)生器的種子避免產生重復值

        var r2 = 0;
        if (r1 == 13)
        r2 = random.Next(0, 7);
        else
        r2 = random.Next(0, 16);

        var str_r2 = rBase[r2].Trim();

        //區(qū)位碼第3位
        random = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i);
        var r3 = random.Next(10, 16);
        var str_r3 = rBase[r3].Trim();

        //區(qū)位碼第4位
        random = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i);
        var r4 = 0;
        if (r3 == 10)
        r4 = random.Next(1, 16);
        else if (r3 == 15)
        r4 = random.Next(0, 15);
        else
        r4 = random.Next(0, 16);

        var str_r4 = rBase[r4].Trim();

        var byte1 = Convert.ToByte(str_r1 + str_r2, 16);
        var byte2 = Convert.ToByte(str_r3 + str_r4, 16);
        //將兩個字節(jié)變量存儲在字節(jié)數(shù)組中
        var str_r = new[] { byte1, byte2 };

        //將產生的一個漢字的字節(jié)數(shù)組放入object數(shù)組中
        bytes.SetValue(str_r, i);
        }
        return bytes;
        }
        #endregion

        生成圖片#region 生成圖片
        void CreateCheckCodeImage(string code)
        {
        var imageCode = new System.Drawing.Bitmap((int)Math.Ceiling((code.Length * 12.5)), 23); //定義圖片的寬度和高度
        var g = Graphics.FromImage(imageCode); //加載圖片到畫布上

        try
        {
        var random = new Random();
        g.Clear(Color.White); //清空圖片背景色

        //畫圖片的背景噪音線
        for (int i = 0; i < 25; i++)
        {
        var x1 = random.Next(imageCode.Width);
        var x2 = random.Next(imageCode.Width);
        var y1 = random.Next(imageCode.Height);
        var y2 = random.Next(imageCode.Height);

        g.DrawLine(new Pen(Color.Silver), new Point(x1, y1), new Point(x2, y2));
        }

        var font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic);
        var brush = new System.Drawing.Drawing2D.LinearGradientBrush(
        new Rectangle(0, 0, imageCode.Width, imageCode.Height),
        Color.Blue, Color.DarkRed, 1.2F, true);
        g.DrawString(code, font, brush, 2, 2);

        //畫圖片的前景噪音點
        for (int i = 0; i < 100; i++)
        {
        var x = random.Next(imageCode.Width);
        var y = random.Next(imageCode.Height);
        imageCode.SetPixel(x, y, Color.FromArgb(random.Next()));
        }

        //畫圖片的邊框線
        g.DrawRectangle(new Pen(Color.Silver), 0, 0, imageCode.Width - 1, imageCode.Height - 1);
        var ms = new System.IO.MemoryStream();
        imageCode.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

        Response.ClearContent();
        Response.ContentType = "image/Jpeg";
        Response.BinaryWrite(ms.ToArray());
        }
        finally
        {
        g.Dispose();
        imageCode.Dispose();
        }

        }
        #endregion

        生成數(shù)據(jù)驗證碼#region 生成數(shù)據(jù)驗證碼
        private string GenerateCheckCode()
        {
        int number;
        char code;
        string checkCode = String.Empty;

        var random = new Random();

        for (int i = 0; i < 5; i++)
        {
        number = random.Next();

        if (number % 2 == 0)
        code = (char)('0' + (char)(number % 10));
        else
        code = (char)('A' + (char)(number % 26));

        checkCode += code.ToString();
        }
        return checkCode;
        }
        #endregion


        使用驗證碼頁面:


        代碼如下:


        <form id="formCode" runat="server">
        <div>
        <img src="CheckCode.aspx" src="CheckCode.aspx" alt="驗證碼" />
        </div>
        </form>

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        .NET 中英文混合驗證碼實現(xiàn)代碼

        .NET 中英文混合驗證碼實現(xiàn)代碼:最終效果如圖: CheckCode.aspx.cs代碼如下 代碼如下:protected void Page_Load(object sender, EventArgs e) { //獲取GB2312編碼頁(表) /**//** * 生成中文驗證驗碼所要使用的方法 * 注,生成中文驗證碼時要改變一下生成驗證碼圖片的寬度 * var
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲av无码成人精品区| 国产无遮挡吃胸膜奶免费看| 国产无遮挡无码视频免费软件| 免费国产成人α片| 久久精品国产亚洲AV不卡| 亚洲毛片免费观看| 国产精品亚洲精品爽爽| 久久午夜羞羞影院免费观看| 国产精品四虎在线观看免费 | 激情综合色五月丁香六月亚洲| 久久久久se色偷偷亚洲精品av| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 一道本不卡免费视频| 黄色成人免费网站| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久久久国产精品免费免费搜索| 黑人大战亚洲人精品一区 | 免费无码黄网站在线看| 国内自产拍自a免费毛片| 亚洲视频免费一区| 中文字幕免费不卡二区| 亚洲毛片基地日韩毛片基地| 黄页免费的网站勿入免费直接进入| 亚洲AV无码一区二区乱孑伦AS | 久久综合久久综合亚洲| 污污网站免费观看| 国产亚洲3p无码一区二区| 亚洲国产精品美女久久久久| 无码日韩人妻av一区免费| 亚洲Av无码精品色午夜| 国产在线jyzzjyzz免费麻豆| 亚洲欧洲专线一区| 免费无码A片一区二三区| 国产成人综合亚洲| 国产V亚洲V天堂无码| 亚洲一级片免费看| 亚洲综合国产一区二区三区| 99在线热视频只有精品免费| 亚洲熟妇AV一区二区三区浪潮| 免费中文熟妇在线影片 | 精品成人免费自拍视频|