using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing; using System.Text;
public partial class Admin_ValidCode : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { this.CreateCheckCodeImage(GenerateCheckCode());
} private string GenerateCheckCode() { int number; //char code; string checkCode = String.Empty;
System.Random random = new Random();
Encoding gb = Encoding.GetEncoding("gb2312"); //调用函数产生4个随机中文汉字编码 object[] bytes = CreateRegionCode(6); //根据汉字编码的字节数组解码出中文汉字 string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[]))); string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[]))); string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[]))); string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[]))); //输出的控制台 checkCode = str1 + str2 + str3 + str4;
//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(); //}
Response.Cookies.Add(new HttpCookie("ValidCode",LjfLib.Encrypt.AES.EncryptAes(checkCode))); //Session["ValidCode"] = checkCode;
return checkCode; }
#region 产生波形滤镜效果
private static object[] CreateRegionCode(int strlength) { //定义一个字符串数组储存汉字编码的组成元素 string[] rBase = new String[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
Random rnd = new Random();
//定义一个object数组用来 object[] bytes = new object[strlength];
/*每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中 每个汉字有四个区位码组成 区位码第1位和区位码第2位作为字节数组第一个元素 区位码第3位和区位码第4位作为字节数组第二个元素 */ for (int i = 0; i < strlength; i++) { //区位码第1位 int r1 = rnd.Next(11, 14); string str_r1 = rBase[r1].Trim();
//区位码第2位 rnd = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i);//更换随机数发生器的
//种子避免产生重复值 int r2; if (r1 == 13) { r2 = rnd.Next(0, 7);
复制本页网址和标题,发送给你QQ/Msn的好友一起分享
上一篇:
技巧 JavaScript常用判断函数
下一篇:
C#中实现VB中的CreateObject方法