¿Cómo funciona Java implementando el código de verificación de verificación? En la vida diaria, los códigos de verificación se pueden ver en todas partes, y puede proteger la seguridad de la cuenta hasta cierto punto. Entonces, ¿cómo lo logró?
Java implementa la función de verificación del código de verificación De hecho, muy simple: se usa una clase de gráficos para dibujar letras en el tablero de arte, seleccionar aleatoriamente un cierto número de letras para generarlas al azar, y luego generar aleatoriamente varias líneas de interferencia en la tabla de arte.
Primero, escriba un código de verificación para generar una clase de ayuda, que se utiliza para dibujar letras aleatorias:
import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.image.bufferedImage; import java.io.ioException; import java.io.outputstream; import java.util.random; import javax.imageio.imageio; Public Final Class GraphichElper { / ** * Devuelve el código de verificación generado en forma de una cadena, y emite una imagen al mismo tiempo * * @param ancho * El ancho de la imagen * @param altura * la altura de la imagen * @param imgtype * type * @param salida de salida * flujo de salida (la imagen de salida de la imagen final (la imagen de salida de la imagen final (la imagen de la imagen final (la imagen de la imagen final (la imagen de la imagen de la imagen final (la imagen de la imagen final (la imagen de la imagen final), la imagen final, la imagen de la imagen final (la imagen de la imagen de la imagen. Final int Height, String final IMGType, salida de salida) {StringBuffer sb = new StringBuffer (); Aleatorio aleatorio = new Random (); Bufferedimage imagen = nueva bufferedimage (ancho, altura, bufferedimage.type_int_rgb); Gráfico gráfico = image.getgraphics (); Graphic.SetColor (color.getColor ("f8f8f8")); Graphic.FillRect (0, 0, ancho, altura); Color [] colores = nuevo color [] {color.blue, color.gray, color.green, color.red, color.black, color.orange, color.cyan}; // Generar líneas de interferencia en el "Artboard" (50 es el número de líneas) para (int i = 0; i <50; i ++) {Graphic.SetColor (Colors [Random.NextInt (Colors.Length)]); final int x = random.nextint (ancho); final int y = random.nextint (altura); final int w = random.nextint (20); final int h = random.nextint (20); final int signa = random.nextboolean ()? 1: -1; final int firb = random.nextboolean ()? 1: -1; Graphic.Drawline (X, Y, X + W * SignA, Y + H * SignB); } // Dibuja las letras en el "Artboard" Graphic.setFont (nueva fuente ("Comic Sans MS", Font.Bold, 30)); for (int i = 0; i <6; i ++) {final int temp = random.nextint (26)+97; Cadena s = string.ValueOf ((char) temp); sb.append (s); Graphic.SetColor (Colors [Random.NextInt (Colors.Length)]); Graphic.DrawString (S, I * (ancho / 6), altura - (altura / 3)); } Graphic.Dispose (); intente {imageIO.Write (Image, imgType, output); } catch (ioException e) {E.PrintStackTrace (); } return sb.ToString (); }} A continuación, cree un servlet para corregir el tamaño de la imagen, procesar los escenarios de uso de los códigos de verificación y capturar el código de verificación generado por la página (el código QR capturado es consistente con el código de verificación ingresado por el usuario antes de que pueda aprobarse).
import java.io.ioException; import java.io.outputstream; import javax.servlet.servletException; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import javax.servlet.http.httpsession; @WebServlet (urlpatterns = "/verify/regist.do") clase pública VerifyCodeservlet extiende httpservlet {private estático final long serialversionUid = 3398560501558431737l; @Override Proteged Void Service (solicitud httpservletRequest, respuesta httpservletResponse) lanza ServletException, ioexception {// Obtener el objeto de sesión correspondiente a la solicitud actual httpsession session = request.getSession (); // Obtenga URI de la solicitud (identificador de recursos uniformes) String uri = request.getRequesturi (); System.out.println ("Hola:" + uri); Ancho final final = 180; // Ancho de imagen final int altura = 40; // Altura de imagen Strida final imgType = "jpeg"; // Especifique el formato de imagen (que no se refiere al tipo MIME) Final OutputStream output = Response.getOutputStream (); // Obtenga la transmisión de salida que puede devolver la imagen al cliente // (transmisión de byte) // crear una imagen de código de verificación y devolver la cadena en el código de cadena de imagen = Graphichelper.Create (ancho, altura, imgType, salida); System.out.println ("Contenido del código de verificación:" + código); // Cree una asociación entre URI y el código de verificación correspondiente (almacenado en los atributos del objeto de sesión actual) Session.SetAttribute (URI, código); System.out.println (session.getAttribute (URI)); }} Luego escriba una página de registro HTML para verificarlo:
<! Doctype html> <html> <fead> <meta charset = "utf-8"> <title> registrar </title> <link rel = "stylesheet" href = "Styles/general.css"> <link rel = "stylesheet" href = "styles/cell.css"> <ink rel = "stylesheet" href = "styles/form.css"> <script type = "text/javaScript" src = "js/ref.js"> </script> <style type = "text/css"> .logo-contener {margin-top: 50px; } .logo-continer img {ancho: 100px; } .Message-Container {altura: 80px; } .link-Container {altura: 40px; Línea de altura: 40px; } .link-continer a {text-decoration: none; } </style> </head> <body> <div> <form de acción = "/wendao/regist.do" método = "post"> <div> <!-Forma de registro inicio-> <div> <span> <i> </i> </span> <span spany = "text-align: izquierda;"> <input type = "text" name = "useName" placeholder = "por favor enter a un usuario de usuario" <iv> <span> <i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> <span> <pane type = "contraseña" name = "confirmar" de lugar = "confirmar la contraseña" </span> </shiv> <span> <span> <pany <pan = "contraseña" name = "confirmar" Tandeador = "Confirme la contraseña" </span> </span> type = "Password" name = "confirmar" placeHolder = "Por favor confirme la contraseña"> </span> </div> <div> <span> <input type = "text" name = "verifycode" placeholder = "Por favor, ingrese el código de verificación"> </span> <span style = "text-align: Center;"> <img = "/Demo/verify. </span> </div> <div style = "border: none;"> <span style = "text-align: left"> <input type = "reset" value = "reset"> </span> <span style = "text-align: right;"> <input type = "subt" value = "registrar"> </span> </div> </iv> <! </html>El efecto es el siguiente:
Cuando hacemos clic para actualizar la página, el código de verificación también cambiará, pero cuando no podemos ver el código de verificación claramente, actualizaremos siempre que haga clic en el código de verificación. De esta manera, la actualización local se puede lograr usando JavaScript.
En <img src = "/demo/verify/regist.do">, agregue un signo de interrogación y una cadena de números de sufijo. Cuando se actualice, deje que los números de sufijo continúen cambiando, y el código de verificación formado también continuará cambiando. Un método que podemos usar es reemplazar los números de sufijo con fecha. La fecha obtiene la hora local y el tiempo cambia en cualquier momento, lo que garantiza que el código de verificación de actualización pueda cambiar en cualquier momento.
El código es el siguiente:
function myRefersh (e) {const Source = e.src; // Obtener el contenido en el src //console.log original ("fuente:" + fuente); Var index = Source.IndexOf ("?"); // Encuentre la primera ubicación de apariencia (return -1 si no existe) //console.log ("índice:" + index); if (index> -1) {// si se encuentra?, ingrese el var s = fuente.substring (0, índice); // intercepta el contenido antes del índice desde la fuente (el índice y el contenido después del índice se descartan) //console.log ("s:" + s); var fecha = nueva fecha (); // crear una instancia del objeto de fecha var tiempo = date.gettime (); // Obtenga el valor del milisegundo correspondiente a este tiempo a partir de la instancia recién creada del objeto de fecha E.Src = S + "? Time =" + Time; // reemplazar la dirección de cola en src //console.log (e.src); } else {var date = new Date (); e.src = fuente + "? Time =" + date.gettime (); }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.