亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于C#的驗(yàn)證碼的繪制

        2015-06-02 12:27:55馬相芬
        電腦知識(shí)與技術(shù) 2015年9期

        馬相芬

        摘要:驗(yàn)證碼技術(shù)通常使用一些線條、隨機(jī)數(shù)、符號(hào)和不規(guī)則的字符組成,借此防止一些黑客把密碼數(shù)據(jù)化或者在網(wǎng)絡(luò)上用機(jī)器人自動(dòng)注冊(cè)、登錄和灌水。為此該文介紹了一種基于C#和GDI+技術(shù)的驗(yàn)證碼的實(shí)現(xiàn)方法。

        關(guān)鍵詞:驗(yàn)證碼;GDI+;隨機(jī)數(shù)

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)09-0108-02

        Abstract: the verification code technology is usually used some lines, random numbers, symbols and irregular characters, to prevent some hackers password data or in the network using robots to automatically register, login and irrigation. This paper introduces a realization method of the C# and the GDI+ technology based on verification code.

        Key words: authentication code; GDI+; random number

        目前,很多WEB程序?yàn)榱朔乐共环ǚ肿訍阂馄平饷艽a、批量注冊(cè),以破壞網(wǎng)站的穩(wěn)定性,大都采用驗(yàn)證碼技術(shù)。所謂驗(yàn)證碼,就是把一串隨機(jī)產(chǎn)生的數(shù)字或符號(hào)生成圖片,并在圖片里加上干擾,然后由用戶連同其它表單信息,一齊提交給網(wǎng)站進(jìn)行驗(yàn)證,驗(yàn)證成功后才能使用某功能。

        1 技術(shù)原理

        1.1 Random類

        在C#中,通過(guò)Random類生成隨機(jī)數(shù),隨機(jī)算法的起始數(shù)字是種子數(shù),在種子數(shù)的基礎(chǔ)上進(jìn)行變換,最終產(chǎn)生需要的隨機(jī)數(shù)。本文采用Random類的Next()方法(如表1所示)來(lái)返回隨機(jī)數(shù)。

        1.2 GDI+繪制技術(shù)

        GDI+是.NET框架中提供二維圖形、圖像處理的功能,在較早GDI版本的基礎(chǔ)上添加了新的功能并改進(jìn)了現(xiàn)有功能,為開(kāi)發(fā)者提供了一組實(shí)現(xiàn)與各種設(shè)備(如顯示器、打印機(jī)等)進(jìn)行交互的庫(kù)函數(shù)。

        Graphic類封裝一個(gè)GDI+繪圖圖面。Graphic對(duì)象是用于創(chuàng)建圖形圖像的對(duì)象,Graphic類的DrawString()方法用于在指定位置并且用指定的Brush和Font對(duì)象繪制指定的文本字符串。

        2 實(shí)現(xiàn)過(guò)程

        1) 啟動(dòng)VS 2010,新建一個(gè)C#的Windows窗體應(yīng)用程序。在窗體中添加一個(gè)Button按鈕和一個(gè)PictureBox控件,分別用于生成驗(yàn)證碼和顯示驗(yàn)證碼。

        2) 實(shí)現(xiàn)代碼

        (1) 生成4位由英文和數(shù)字組成的字符串

        private static string CKCode()

        {

        int num;

        char code;//存儲(chǔ)每次生成的數(shù)字或字符

        string verifyCode = ""; //存儲(chǔ)隨機(jī)數(shù)

        Random random = new Random();

        for (int i = 1; i <= 4; i++)

        {

        num = random.Next();

        //判斷隨機(jī)數(shù),若是偶數(shù)則存儲(chǔ)數(shù)字,若是3的倍數(shù)則存儲(chǔ)小寫(xiě)字母,否則存儲(chǔ)大寫(xiě)字母

        if(num%2==0)

        code=(char)('0'+(char)(num%10));

        else if(num%5==0)

        code = (char)('a' + (char)(num % 26));

        else

        code = (char)('A' + (char)(num % 26));

        verifyCode +=" "+ code.ToString();

        }

        return verifyCode;

        }

        (2) 將CKCode方法生成的字符串轉(zhuǎn)化為Bitmap位圖添加到PictureBox控件

        private static Image CodeToPict(string verifyCode)

        {

        if (verifyCode == null || verifyCode.Trim() =="")

        return null;

        Bitmap img = new Bitmap((int)Math.Ceiling((verifyCode.Length*10.1)),26);

        Graphics graphics = Graphics.FromImage(img);

        Random random = new Random();

        graphics.Clear(Color.White);

        for (int i = 1; i <= 5; i++)//繪制噪音線

        {

        int x1=x2 = random.Next(img.Width);

        int y1=y2= random.Next(img.Height);

        graphics.DrawLine(new Pen(Color.Black),x1,y1,x2,y2);

        }

        Font font = new Font("Times New Roman ",16,(FontStyle.Bold));

        graphics.DrawString(verifyCode,font,new SolidBrush(Color.Red),2,2);

        for (int i = 0; i < 140; i++)//繪制噪音點(diǎn)

        {

        int x = random.Next(img.Width);

        int y = random.Next(img.Height);

        img.SetPixel(x,y,Color.FromArgb(random.Next()));

        }

        graphics.DrawRectangle(new Pen(Color. Gray), 0, 0, img.Width - 1, img.Height - 1);

        return img;

        }

        運(yùn)行效果如圖1所示。

        3 結(jié)束語(yǔ)

        該文采用GDI+技術(shù)和C#程序語(yǔ)言完成了驗(yàn)證碼的繪制,GDI+是對(duì)Windows操作系統(tǒng)GDI函數(shù)庫(kù)的擴(kuò)充,可以在窗體程序中產(chǎn)生很多自定義的圖形,便于開(kāi)發(fā)人員展示圖形化的數(shù)據(jù)。

        參考文獻(xiàn):

        [1] William Stalling.密碼編碼學(xué)與網(wǎng)絡(luò)安全[M].北京:電子工業(yè)出版社,2004.

        [2] 耿肇英,趙建立.C#應(yīng)用程序設(shè)計(jì)教程[M].北京:人民郵電出版社,2009.

        [3] 明日科技.C#程序開(kāi)發(fā)范例寶典[M].北京:人民郵電出版社,2010.

        [4] 齊立波,黃俊偉.C#入門(mén)經(jīng)典[M].6版.北京:清華大學(xué)出版社,2014.

        国产精品51麻豆cm传媒| 一区二区三区在线乱码| 91久久国产香蕉视频| 蜜桃一区二区三区| 精品国产一区二区三区三| 国产精品久久久久久人妻无| 欧美粗大猛烈老熟妇| 人人妻人人玩人人澡人人爽| 无码一区二区三区AV免费换脸| av草草久久久久久久久久久 | 久久er99热精品一区二区| 亚洲国产精品久久久久秋霞1 | 国产真人无码作爱视频免费 | 在线看亚洲一区二区三区| 欧美亚洲一区二区三区| 亚洲国产精品久久久久秋霞影院 | 中文字幕人妻互换激情| 一本加勒比hezyo无码专区| 欧美亚洲精品一区二区| 无码视频一区=区| 日本中文字幕官网亚洲| 国产草逼视频免费观看| 国产乱了真实在线观看| 亚洲综合中文字幕乱码在线| 欧美日本视频一区| 久久99精品综合国产女同| 国产无套粉嫩白浆在线观看| 免费人成毛片乱码| 91精品国产色综合久久不| 国产成人精品一区二区三区av| 色婷婷综合久久久中文字幕| 人妻夜夜爽天天爽一区 | 国产一线二线三线女| 亚洲精品乱码久久久久99| 91九色国产老熟女视频| 免费毛片a线观看| 国产精品无码片在线观看| 日本中文字幕官网亚洲| 亚洲午夜久久久久久久久久| 1000部夫妻午夜免费| 2021久久精品国产99国产|