Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo implementar el código de verificación usando Java

Cómo implementar el código de verificación usando Java

Hoy en día, muchos sistemas han agregado la funcionalidad de código de verificación aleatorio a sus módulos de registro, inicio de sesión o publicación para evitar el uso de programas de registro o publicación automática.

El código de verificación es en realidad un A seleccionado al azar Número de caracteres que aparecerán en la página como imagen. Si envía una acción que requiere que también envíe caracteres en la imagen y los caracteres enviados no son consistentes con los caracteres almacenados en la sesión del servidor, el envío se considerará inválido. Si los caracteres enviados difieren de los almacenados en la sesión del servidor, el envío se considera inválido.

Para evitar que los programas automatizados analicen la imagen, a menudo generan líneas aleatoriamente o distorsionan los caracteres de la imagen, lo que hace más difícil reconocer automáticamente el código de verificación.

Aquí usamos Java para implementar el código de verificación

lt; @ tipo de contenido de página = imagen/jpeg import = java aw jpeg import = java awt * java awt imagen * java util * javax imageio * gt;

Color getRandColor(int fc int bc){/Obtiene un color aleatorio para un rango determinado

Random random = new Random()

<; p> if(fcgt; ) fc= ;

if(bcgt; ) bc= ;

if(bcgt; ) bc=

int r=. fc aleatorio siguienteInt(bc fc);

int g=fc aleatorio siguienteInt(bc fc

int b=fc aleatorio siguienteInt(bc fc); > return new Color(r g b);

}

gt;

lt

//Configurar la página para que no se almacene en caché<; /p>

respuesta setHeader(Pragma Sin caché);

respuesta setHeader(Control de caché sin caché

respuesta setDateHeader(Expires); // Crear imagen en la memoria

int width= height=

Imagen Buffered = new BufferedImage( ancho alto BufferedImage TYPE_INT_RGB

<); p> // Obtener el contexto de los gráficos

Gráficos g = image getGraphics();

// Generar clase aleatoria

Aleatorio aleatorio = new Random();

// Establecer color de fondo

g setColor(getRandColor( )); p>

g setFont(new Font( Times New Roman Font PLAIN )

// Genera aleatoriamente una línea de interferencia para que Es poco probable que otros programas detecten el código de verificación en la imagen

g setColor(getRandColor( )

for (int i= ; ilt; ; i )

{

int x = aleatorio nextInt(ancho);

> int y = nextInt aleatorio(altura);

int xl = nextInt aleatorio(

int yl = nextInt aleatorio( ); x y x xl y yl);

}

// Obtener código de verificación generado aleatoriamente (operación de bits)

String codeList = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

< p; > Cadena sRand= ;

for (int i= ; ilt; ; i ){

int a=random nextInt(codeList length()

); String rand=codeList substring(a a).

sRand =rand

// Mostrar código en la imagen

g setColor(new Color( random nextInt ( ) nextInt aleatorio( ) nextInt aleatorio( ) nextInt aleatorio( ))) // Llama a la función usando el mismo color. Esto puede deberse a que las semillas están demasiado juntas, por lo que solo podemos generarlas directamente

g drawString(rand *i); Almacene el código de verificación en SESSION

session setAttribute( rand sRand

// La imagen entra en vigor

g dispose(); > // Salida de la imagen a la página

ImageIO write(respuesta de imagen JPEG getOutputStream()

out clear()

out = pageContext pushBody; (); lishixinzhi/Artículo/programa/Java/hx/201311/25536