Wie implementiert Java Überprüfung der Überprüfung des Verifizierungscodes? Im täglichen Leben können überall Verifizierungscodes gesehen werden, und er kann die Sicherheitskontensicherheit in gewissem Maße schützen. Wie hat er es erreicht?
Java implementiert die Überprüfungsfunktion des Verifizierungscodes Tatsächlich sehr einfach: Eine Grafikklasse wird verwendet, um Buchstaben auf der ARTboard zu zeichnen, zufällig eine bestimmte Anzahl von Buchstaben auszuwählen, um sie zufällig zu generieren, und dann zufällig mehrere Interferenzleitungen in der ARTboard generieren.
Schreiben Sie zunächst einen Verifizierungscode, um eine Hilfsklasse zu generieren, mit der zufällige Buchstaben zeichnen:
Import Java.awt.Color; import Java.awt.font; importieren java.awt.graphics; Import Java.awt.image.BuffenedImage; importieren java.io.ioException; importieren java.io.outputstream; import Java.util.random; import Javax.imageo.imageo; public Final Class Graphichelper { / ** * Gibt den generierten Verifizierungscode in Form einer Zeichenfolge zurück und geben Sie gleichzeitig ein Bild aus * * @param width * Die Breite des Bildes * @param Höhe * Die Höhe des Bildes * @param imgtype * Bildtyp * @param Ausgabe * Bildausgabe Stream (das Bild wird zu diesem Stream -Stream -Stream -Stream -Stream -Stream -Stream. endgültige inthohe, endgültiger String imgType, Ausgangsstream -Ausgabe) {StringBuffer sb = new StringBuffer (); Random random = new random (); Bufferedimage image = new bufferedImage (width, Höhe, bufferedimage.type_int_rgb); Graphics graphic = image.getGraphics (); graphic.setColor (color.getColor ("f8f8f8")); grafisch.FillRect (0, 0, Breite, Höhe); Color [] colors = new color [] {color.blue, color.gray, color.green, color.red, color.black, color.orange, color.cyan}; // Interferenzlinien auf der "altboard" generieren (50 ist die Anzahl der Zeilen) für (int i = 0; i <50; i ++) {graphic.setColor (farben [random.nextint (farben.länge)]); endgültig int x = random.nextint (width); endgültig int y = random.nextint (Höhe); endgültig int w = random.nextint (20); endgültig int h = random.nextint (20); endgültig int signa = random.nextboolean ()? 1: -1; endgültig int signb = random.nextboolean ()? 1: -1; Graphic.Drawline (x, y, x + w * Signa, y + h * signb); } // Zeichnen Sie die Buchstaben auf der "altboard" grafik. für (int i = 0; i <6; i ++) {endgültig int temp = random.nextint (26)+97; String S = String.ValueOf ((char) temp); sb.Append (s); graphic.setColor (farben [random.nextint (colors.Length)]); Graphic.Drawstring (s, i * (Breite / 6), Höhe - (Höhe / 3)); } graphic.dispose (); try {imageio.write (Bild, imgType, output); } catch (ioException e) {e.printstacktrace (); } return sb.toString (); }} Erstellen Sie anschließend ein Servlet, um die Bildgröße zu beheben, die Nutzungsszenarien von Überprüfungscodes zu verarbeiten und den von der Seite generierten Überprüfcode zu erfassen (der erfasste QR -Code steht im Einklang mit dem vom Benutzer eingegebenen Verifizierungscode, bevor er übergeben werden kann).
importieren java.io.ioException; importieren java.io.outputstream; importieren javax.servlet.servletException; import javax.servlet.annotation.webservlet; import Javax.servlet.http.httpServlet; importieren javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpServletResponse; import Javax.servlet.http.httpSession; @WebServlet (urlpatterns = "/verify/regist.do") öffentliche Klasse VerifyCodeServlet erweitert HttpServlet {private statische lange Serialversionuid = 3398560501558431737L; @Override Protected void Service (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst ServletException aus, iOException {// Erhalten Sie das Sitzungsobjekt, das der aktuellen Anforderung entspricht. // URI aus der Anfrage (Uniform Resource Identifier) String uri = Request.GetRequesturi () abrufen; System.out.println ("Hallo:" + Uri); endgültige int width = 180; // Bildbreite endgültige inthöhe = 40; // Bildhöhe Final String imgType = "JPEG"; // Geben Sie das Bildformat an (der sich nicht auf MIME -Typ bezieht) endgültig Ausgabestream output = response.getOutputStream (); // den Ausgabestream abrufen, mit dem das Bild an den Client zurückgegeben werden kann // (Byte -Stream) // Ein Verifizierungscode -Bild erstellen und die Zeichenfolge im Bild String -Code = Graphichelper.create (Breite, Höhe, IMGTYPE, Ausgabe) zurückgeben; System.out.println ("Verifizierungscode -Inhalt:" + Code); // Erstellen Sie eine Assoziation zwischen URI und dem entsprechenden Verifizierungscode (in den Attributen des aktuellen Sitzungsobjekts gespeichert) Sitzung.SetatTribute (URI, Code); System.out.println (Session.getAttribute (URI)); }} Schreiben Sie dann eine HTML -Registrierungsseite, um sie zu überprüfen:
<! DocType html> <html> <head> <meta charset = "utf-8"> <title> Register </title> <link rel = "stylesheet" href = "styles/allgemein.css"> <link rel = "styleSheet" href = "styles/cashss"> <link rel = "stilesheet" href = "stiles/cells"> <link rel = "stilesheet" type = "text/javaScript" src = "js/ref.js"> </script> <style type = "text/css"> .Logo-container {margin-top: 50px; } .Logo-container img {width: 100px; } .Message-container {Höhe: 80px; } .Link-container {Höhe: 40px; Zeilenhöhe: 40px; } .Link-container a {textdekoration: keine; } </style> </head> <body> <div> <form action = "/wendao/regist.do" methode = "post"> <div> <!-Registrierungsformular Start-> <div> <i> </i> </ila. span> <span> <span style = "text-Align: links; <div> <span> <i> </i> </span> <span> <i> </i> </span> <i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> </iNtum ". Typ = "Passwort" name = "bestätigen" placeholder = "Bitte bestätigen Sie das Passwort"> </span> </div> <div> <span> <Eingabe type = "text" name = "verifyCode" placeholder = "Bitte geben Sie den Verifizierungscode ein"> </span> <span style = "text-align: center; </span> </div> <div style="border: none;"> <span style="text-align: left"> <input type="reset" value="reset"> </span> <span style="text-align:right;"> <input type="submit" value="register"> </span> </div> </div> <!-- End of the registration form--> </form> </div> </body> </html>Der Effekt ist wie folgt:
Wenn wir klicken, um die Seite zu aktualisieren, ändert sich auch der Bestätigungscode. Wenn wir jedoch den Verifizierungscode nicht klar sehen können, werden wir aktualisiert, solange wir auf den Bestätigungscode klicken. Auf diese Weise kann die lokale Aktualisierung mit JavaScript erreicht werden.
Fügen Sie in <img Src = "/Demo/verifizieren/regist.do"> ein Fragezeichen und eine Zeichenfolge von Suffixnummern hinzu. Wenn sich die Suffix -Zahlen beim Auffrischen ändern, ändern sich weiter und der gebildete Verifizierungscode ändert sich auch weiter. Eine Methode, die wir verwenden können, besteht darin, die Suffixnummern durch Datum zu ersetzen. Datum erhält die lokale Zeit und die Uhrzeit ändert sich jederzeit, wodurch sich jederzeit ändern kann.
Der Code ist wie folgt:
Funktion MyRefersh (e) {const Source = e.src; // den Inhalt im ursprünglichen SRC //console.log ("Quelle:" + Quelle) erhalten; var index = source.indexof ("?"); // den ersten Erscheinungsort finden (return -1, wenn es nicht existiert) //console.log ("Index:" + Index); if (index> -1) {// wenn es gefunden wurde? // den Inhalt vor dem Index aus der Quelle (Index und Inhalt nach dem Index verworfen) abfangen //console.log ("S:" + s); var date = new Date (); // Erstellen Sie eine Instanz des Datumsobjekts var time = date.getTime (); // Erhalten Sie den Millisekundenwert, der dieser Zeit aus der neu erstellten Instanz des Datumsobjekts entspricht. // Ersetzen Sie die Schwanzadresse auf SRC //console.log (E.SRC); } else {var date = new Date (); e.src = source + "? time =" + date.getTime (); }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.