IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類(lèi)|軟件專(zhuān)題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)網(wǎng)絡(luò)編程.Net編程 → .NET實(shí)現(xiàn)中英文驗(yàn)證碼

.NET實(shí)現(xiàn)中英文驗(yàn)證碼

時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

  最終效果如圖:

???

  CheckCode.aspx.cs代碼如下

  1??? protected void Page_Load(object sender, EventArgs e)

  2??? {

  3? //獲取GB2312編碼頁(yè)(表)

  4? /**//**

  5?? * 生成中文驗(yàn)證驗(yàn)碼所要使用的方法

  6?? * 注,生成中文驗(yàn)證碼時(shí)要改變一下生成驗(yàn)證碼圖片的寬度

  7?? * var imageCode = new System.Drawing.Bitmap((int)Math.Ceiling((code.Length * 22.5)), 23); //定義圖片的寬度和高度

  8?? **/

  9

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

  11

  12? /**/////調(diào)用函數(shù)產(chǎn)生4個(gè)隨機(jī)中文漢字編碼

  13? //object[] bytes = CreateRegionCode(4);

  14

  15? /**/////根據(jù)漢字編碼的字節(jié)數(shù)組解碼出中文漢字

  16? //var sbCode = new StringBuilder().Append(gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[]))))

  17? //??? .Append(gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[]))))

  18? //??? .Append(gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[]))))

  19? //??? .Append(gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[]))));

  20? //CreateCheckCodeImage(sbCode.ToString());

  21

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

  23??? }

  24

  25??? 生成漢字驗(yàn)證碼#region 生成漢字驗(yàn)證碼

  26??? /**////

  27??? /// 此函數(shù)在漢字編碼范圍內(nèi)隨機(jī)創(chuàng)建含兩個(gè)元素的十六進(jìn)制字節(jié)數(shù)組,每個(gè)字節(jié)數(shù)組代表一個(gè)漢字,并將四個(gè)字節(jié)數(shù)組存儲(chǔ)在object數(shù)組中。

  28??? ///

  29??? /// 代表需要產(chǎn)生的漢字個(gè)數(shù)

  30??? ///

  31??? static object[] CreateRegionCode(int strLength)

  32??? {

  33? var rBase = new[]

  34????? {

  35??? "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"

  36????? };

  37

  38? var random = new Random();

  39? var bytes = new object[strLength];

  40

  41? /**//*每循環(huán)一次產(chǎn)生一個(gè)含兩個(gè)元素的十六進(jìn)制字節(jié)數(shù)組,并將其放入bject數(shù)組中

  42?? 每個(gè)漢字有四個(gè)區(qū)位碼組成

  43?? 區(qū)位碼第1位和區(qū)位碼第2位作為字節(jié)數(shù)組第一個(gè)元素

  44?? 區(qū)位碼第3位和區(qū)位碼第4位作為字節(jié)數(shù)組第二個(gè)元素

  45? */

  46

  47? for (int i = 0; i < strLength; i++)

  48? {

  49????? //區(qū)位碼第1位

  50????? var r1 = random.Next(11, 14);

  51????? var str_r1 = rBase[r1].Trim();

  52

#p#副標(biāo)題#e#

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

  54

  55????? var r2 = 0;

  56????? if (r1 == 13)

  57??? r2 = random.Next(0, 7);

  58????? else

  59??? r2 = random.Next(0, 16);

  60

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

  62

  63????? //區(qū)位碼第3位

  64????? random = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i);

  65????? var r3 = random.Next(10, 16);

  66????? var str_r3 = rBase[r3].Trim();

  67

  68????? //區(qū)位碼第4位

  69????? random = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i);

  70????? var r4 = 0;

  71????? if (r3 == 10)

  72??? r4 = random.Next(1, 16);

  73????? else if (r3 == 15)

  74??? r4 = random.Next(0, 15);

  75????? else

  76??? r4 = random.Next(0, 16);

  77

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

  79

  80????? var byte1 = Convert.ToByte(str_r1 + str_r2, 16);

  81????? var byte2 = Convert.ToByte(str_r3 + str_r4, 16);

  82????? //將兩個(gè)字節(jié)變量存儲(chǔ)在字節(jié)數(shù)組中

  83????? var str_r = new[] { byte1, byte2 };

  84

  85????? //將產(chǎn)生的一個(gè)漢字的字節(jié)數(shù)組放入object數(shù)組中

  86????? bytes.SetValue(str_r, i);

  87????

關(guān)鍵詞標(biāo)簽:.NET,中英文驗(yàn)證碼

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 誅仙3飛升任務(wù)怎么做-誅仙3飛升任務(wù)流程最新2022 誅仙3飛升任務(wù)怎么做-誅仙3飛升任務(wù)流程最新2022 鐘離圣遺物推薦-原神鐘離圣遺物詞條 鐘離圣遺物推薦-原神鐘離圣遺物詞條 解決方法:應(yīng)用程序“DEFAULT WEB SITE”中的服務(wù)器錯(cuò)誤 解決方法:應(yīng)用程序“DEFAULT WEB SITE”中的服務(wù)器錯(cuò)誤 使用aspnet_regiis.exe 重新注冊(cè).NET Framework 使用aspnet_regiis.exe 重新注冊(cè).NET Framework

相關(guān)下載

    人氣排行 誅仙3飛升任務(wù)怎么做-誅仙3飛升任務(wù)流程最新2022 asp.net表單提交方法GET\POST 在ASP.NET中如何判斷用戶IE瀏覽器的版本 Asp.net中messagebox的實(shí)現(xiàn)方法 Asp.net中的web.config配置 在ASP.NET MVC中實(shí)現(xiàn)大文件異步上傳 asp.net獲取URL和IP地址 FileUpload上傳多文件出現(xiàn)錯(cuò)誤的解決方法