При разработке модуля входа пользователя мы часто используем коды проверки, которые могут эффективно предотвратить злонамеренный взлом хакерским программным обеспечением. Теперь я раскрою исходный код моих часто используемых кодов проверки.
Как использовать:
1. Добавьте в веб-проект класс, например «CreateImage.cs», а затем скопируйте в него опубликованный мной исходный код;
2. Создайте новую веб-форму, например «Image.aspx», и добавьте код «CreateImage.DrawImage ();» Конечно, не забудьте добавить ссылку на класс! !
3. Добавьте следующий код JavaScript в соответствующую позицию на странице (где вы хотите поместить код подтверждения), и все в порядке.
Исходный код выглядит следующим образом:
///
///Модуль кода проверки///
публичный класс CreateImage
{
публичная статическая пустота DrawImage()
{
CreateImage img = новый CreateImage ();
HttpContext.Current.Session["CheckCode"]=img.RndNum(4);
img.CreateImages(HttpContext.Current.Session["CheckCode"].ToString());
}
///
/// Создать проверочное изображение ///
/// Проверка символов Private void CreateImages(string checkCode)
{
int iwidth = (int)(checkCode.Length * 13);
System.Drawing.Bitmap image = новый System.Drawing.Bitmap(iwidth, 23);
Графика g = Graphics.FromImage(изображение);
г.Прозрачный(Цвет.Белый);
//Определение цвета Color[] c = {Color.Black,Color.Red,Color.DarkBlue,Color.Green,Color.Orange,Color.Brown,Color.DarkCyan,Color.Purple};
//Определение шрифта string[] font = {"Verdana","Microsoft Sans Serif","Comic Sans MS","Arial","宋体"};
Случайный рандом = новый Случайный();
//Случайным образом выводим точки шума for(int i=0;i<50;i++)
{
int x = rand.Next(image.Width);
int y = rand.Next(image.Height);
g.DrawRectangle(new Pen(Color.LightGray, 0),x,y,1,1);
}
//Вывод символов кода проверки разными шрифтами и цветами for(int i=0;i
{
int cindex = rand.Next(7);
int findex = rand.Next(5);
Шрифт f = новый System.Drawing.Font(font[findex], 10, System.Drawing.FontStyle.Bold);
Кисть b = новый System.Drawing.SolidBrush(c[cindex]);
интервал ii=4;
если((я+1)%2==0)
{
ii=2;
}
g.DrawString(checkCode.Substring(i,1), f, b, 3+(i*12), ii);
}
//Рисуем границу g.DrawRectangle(new Pen(Color.Black,0),0,0,image.Width-1,image.Height-1);
//Вывод в браузер System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
HttpContext.Current.Response.ClearContent();
//Response.ClearContent();
HttpContext.Current.Response.ContentType = "изображение/Jpeg";
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
г.Dispose();
изображение.Dispose();
}
///
/// Генерируем случайные буквы ///
/// Количество сгенерированных букв /// строка
частная строка RndNum (int VcodeNum)
{
строка Vchar = "0,1,2,3,4,5,6,7,8,9";
string[] VcArray = Vchar.Split(',') ;
string VNum = "" ; // Поскольку строка очень короткая, StringBuilder не требуется int temp = -1 // Запишите последнее случайное значение и постарайтесь избежать создания нескольких одинаковых случайных чисел // Используйте простой алгоритм, чтобы гарантировать создание разные случайные числа Random rand =new Random();
for (int i = 1; i <VcodeNum+1; i++)
{
если (темп!= -1)
{
rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
}
int t = rand.Next(VcArray.Length);
if (temp != -1 && temp == t)
{
вернуть RndNum (VcodeNum);
}
температура = т;
VNum += VcArray[t];
}
вернуть ВНум;
}