Muitas páginas da web agora usam imagens aleatórias ao fazer login, o que é uma forma simples e eficaz de prevenir ataques maliciosos de hackers. Li algumas informações na Internet hoje e entendo o princípio de geração: obter uma string aleatória da amostra, salvar a string aleatória na sessão e formar uma imagem de código aleatória na forma de um bitmap.
concluir:
Adicione namespace
usando System.Drawing;
usando System.Drawing.Imaging;
usando System.Drawing.Drawing2D;
Gere o código da página
usando System;
usando System.Data;
usando System.Configuration;
usando System.Collections;
usando System.Web;
usando System.Web.Security;
usando System.Web.UI;
usando System.Web.UI.WebControls;
usando System.Web.UI.WebControls.WebParts;
usando System.Web.UI.HtmlControls;
usando System.Drawing;
usando System.Drawing.Imaging;
usando System.Drawing.Drawing2D;
classe pública parcial getRandImg: System.Web.UI.Page;
{
protegido void Page_Load (remetente do objeto, EventArgs e)
{
//Gera imagens de código aleatório
SetValidateCode();
//A página gerada não é salva no cache
Response.Cache.SetNoStore();
}
//Definir código de verificação
privado vazio SetValidateCode()
{
//Cria um novo bitmap
Bitmap novoBitmap = novo Bitmap(
71,
vinte e três,
PixelFormat.Format32bppArgb
);
//Obtém a tela de desenho do bitmap
Gráficos g = Graphics.FromImage(newBitmap);
//gerador de números aleatórios
Aleatório r = novo Aleatório();
//Limpa a tela de desenho
g.Claro(Cor.Branco);
//Interferência da linha da tela de desenho
para (int i = 0; i < 50; i++)
{
int x1 = r.Next(novoBitmap.Largura);
int x2 = r.Next(novoBitmap.Largura);
int y1 = r.Next(novoBitmap.Height);
int y2 = r.Next(newBitmap.Height);
g.DrawLine(nova Caneta(
Color.FromArgb(r.Next())),
x1,
y1,
x2,
y2
);
}
//Desenhando interferência de pontos na tela
para (int i = 0; i < 100; i++)
{
int x = r.Next(novoBitmap.Largura);
int y = r.Next(newBitmap.Height);
novoBitmap.SetPixel(
x,
sim,
Color.FromArgb(r.Next())
);
}
//Obtém uma string aleatória (5 dígitos de comprimento)
valor da string = GenerateRandom(5);
//Atribuir string aleatória à Sessão
Sessão["RandCode"] = valor;
//Define o estilo da fonte de exibição da imagem
Fonte fonte = nova fonte(
"Arial",
14,
FontStyle.Bold
);
Aleatório rr = new Aleatório();
int aa = rr.Next(1, 4);
//Define uma string aleatória para exibir o pincel da imagem
Pincel LinearGradientBrush = novo LinearGradientBrush(
novo retângulo (0, 0, 71, 23),
Cor.Vermelho,
Cor. Azul,
1,2f,
verdadeiro
);
g.DrawString(valor, fonte, pincel, 2, aa);
g.DrawRectangle(nova Caneta(
Cor.Prata),
0,
0,
70,
vinte e dois
);
System.IO.MemoryStream ms = novo System.IO.MemoryStream();
novoBitmap.Save(ms, ImageFormat.Gif);
//Imagem de saída
Response.ClearContent();
Response.ContentType = "imagem/gif";
Response.BinaryWrite(ms.ToArray());
}
//conjunto constante
char estático privado[] constante ={
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'você','v','w','x','y','z'
};
//gera uma string aleatória
string estática pública GenerateRandom (int Length)
{
System.Text.StringBuilder novoRandom = novo System.Text.StringBuilder(36);
Aleatório rd = new Aleatório();
for (int i = 0; i <Comprimento; i++)
{
newRandom.Append(constante[rd.Next(36)]);
}
return newRandom.ToString();
}
}
Para páginas que usam imagens aleatórias, o controle IMAGE é escrito da seguinte forma:
<asp:Image ID="Image1" ImageUrl="~/getRandImg.aspx" runat="server" />
Código de exemplo: http://www.cnblogs .com /heekui/archive/2007/01/06/613609.html