Как Java реализует функцию проверки проверки кода? В повседневной жизни коды проверки можно увидеть повсюду, и он может в определенной степени защищать безопасность учетной записи. Так как он это достиг?
Java реализует функцию проверки проверки проверки кода на самом деле очень просто: графический класс используется для рисования букв на артборде, случайным образом выбирает определенное количество букв, чтобы случайным образом генерировать их, а затем случайным образом генерировать несколько интерференционных линий на артборде.
Во -первых, напишите код проверки для создания класса справки, который используется для рисования случайных букв:
импортировать java.awt.color; импортировать java.awt.font; импортировать java.awt.graphics; Импорт java.awt.image.bufferedImage; импортировать java.io.ioexception; импортировать java.io.outputstream; импортировать java.util.random; Импорт javax.imageio.imageio; public final Class Graphichelper { / ** * Возвращает сгенерированный код проверки в форме строки и одновременно выводит изображение * * * @param ширина * Ширина изображения * @param Выходная высота * Выходная высота изображения * @param * @retur Окончательная высота int, окончательная строка imgtype, outputstream output) {stringbuffer sb = new Stringbuffer (); Случайный случайный = new Random (); BufferedImage Image = new BufferedImage (ширина, высота, bufferedimage.type_int_rgb); Graphics Graphic = Image.getGraphics (); graphic.setcolor (color.getcolor ("f8f8f8")); graphic.fillrect (0, 0, ширина, высота); Color [] colors = new Color [] {color.blue, color.gray, color.green, color.red, color.black, color.orange, color.cyan}; // генерировать линии интерференции на «Artboard» (50 - это количество линий) для (int i = 0; i <50; i ++) {graphic.setcolor (colors [random.nextint (colors.length)]); окончательный int x = random.nextint (ширина); final int y = random.nextint (высота); окончательный int w = random.nextint (20); окончательный int h = random.nextint (20); final int signa = random.nextboolean ()? 1: -1; final int signb = random.nextboolean ()? 1: -1; graphic.drawline (x, y, x + w * signa, y + h * signb); } // Нарисуйте буквы на «artboard» graphic.setfont (новый шрифт ("Comic Sans MS", font.bold, 30)); for (int i = 0; i <6; i ++) {final int temp = random.nextint (26)+97; String s = string.valueof ((char) temp); SB.Append (ы); graphic.setcolor (colors [random.nextint (colors.length)]); graphic.drawstring (s, i * (ширина / 6), высота - (высота / 3)); } graphic.dispose (); try {imageio.write (image, imgtype, output); } catch (ioException e) {e.printstackTrace (); } вернуть sb.toString (); }} Затем создайте сервлет, чтобы исправить размер изображения, обработать сценарии использования кодов проверки и захватить код проверки, сгенерированный страницей (захваченный QR -код согласуется с кодом проверки, введенного пользователем, прежде чем его можно будет пройти).
импортировать java.io.ioexception; импортировать java.io.outputstream; Импорт javax.servlet.servletexception; Импорт javax.servlet.annotation.webservlet; Импорт javax.servlet.http.httpservlet; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Импорт javax.servlet.http.httpsession; @Webservlet (urlpatterns = "/verify/regist.do") открытый класс VerifyCodeservlet расширяет httpservlet {private static final long serialversionuid = 3398560501558431737L; @Override Protected void Service (httpservlectrequest, httpservletresponse response) Throws servletexception, ioexception {// Получить объект сеанса, соответствующий текущему запросу httpsession session = request.getsession (); // Получить URI из запроса (унифицированный идентификатор ресурса) string uri = request.getRequesturi (); System.out.println ("Hello:" + uri); окончательная ширина int = 180; // Ширина изображения окончательная высота int = 40; // высота изображения конечная строка imgtype = "jpeg"; // Укажите формат изображения (не ссылаясь на тип MIME) Конечный выход outputStream = response.getOutputStream (); // Получить выходной поток, который может вернуть изображение в клиенту // (байт -поток) // Создать изображение кода проверки и вернуть строку в строке изображения код = gripecithelper.create (ширина, высота, imgtype, output); System.out.println ("Контент проверки кода:" + code); // Создание ассоциации между URI и соответствующим кодом проверки (сохраненный в атрибутах текущего объекта сеанса) Session.SetAttribute (URI, Code); System.out.println (session.getattribute (uri)); }} Затем напишите страницу регистрации HTML, чтобы проверить ее:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register</title> <link rel="stylesheet" href="styles/general.css" > <link rel="stylesheet" href="styles/cell.css"> <link rel="stylesheet" href="styles/form.css"> <script type = "text/javascript" src = "js/ref.js"> </script> <style type = "text/css"> .logo-container {margin-top: 50px; } .logo-container img {width: 100px; } .message-container {height: 80px; } .link-container {height: 40px; высота линии: 40px; } .link-container a {text-decoration: none; } </style> </head> <body> <div> <form action="/wendao/regist.do" method="post"> <div> <!-- Registration form start--> <div> <span> <i></i> </span> <span style="text-align: left;"> <input type="text" name="username" placeholder="Please enter a username"> </span> </div> <div> <pan> <i> </i> </span> <pran> <i> </i> </span> <pan> <i> </i> </span> <pan> <i> </i> </span> <pan> <i> </i> </span> <pran> <input = "password" = "Подтверждение" div> </i> </span> <pran> <pow type = "password" name = "Подтверждение" Placeholder = "Пожалуйста, подтвердите пароль"> </span> </div> <div> <pan> <input type = "text" name = "verifycode" Placeholder = "Пожалуйста, введите код проверки"> </span> <span style = "text-align: centre; </span> </div> <div style = "border: none;"> <span style = "text-align: left"> <input type = "reset" value = "reset"> </span> <span style = "text-align: справа;"> <input type = "pospe" value = "Запись"> </span> </div> </div> <!-конец формы регистрации> </span> </div> </div> <! </html>Эффект заключается в следующем:
Когда мы нажимаем, чтобы обновить страницу, код проверки также изменится, но когда мы не сможем ясно видеть код проверки, мы будем обновлять, пока мы нажмите на код проверки. Таким образом, локальное обновление может быть достигнуто с помощью JavaScript.
В <img src = "/demo/verify/regist.do"> добавьте знак вопроса и строку номеров суффиксов. При освещении, пусть номера суффиксов продолжат меняться, и сформированный код проверки также будет продолжаться. Один из методов, который мы можем использовать, - это заменить номера суффиксов на дату. Дата получает локальное время, и время меняется в любое время, что гарантирует, что код проверки обновления может измениться в любое время.
Код заключается в следующем:
Функция myRefersh (e) {const source = e.src; // Получить контент в исходном src //console.log ("Source:" + source); var index = source.indexof ("?"); // Найти первое местоположение появления (вернуть -1, если его не существует) //console.log ("index:" + index); if (index> -1) {// Если он найден?, Введите внутренний var s = source.substring (0, index); // перехватывают содержимое перед индексом из источника (индекс и содержание после индекса отбрасываются) //console.log ("s:" + s); var date = new Date (); // Создать экземпляр объекта Date Object var time = date.getTime (); // Получить миллисекундное значение, соответствующее этому времени из недавно созданного экземпляра объекта даты e.src = s + "? Time =" + Time; // заменить хвостовой адрес на src //console.log (e.src); } else {var date = new date (); e.src = source + "? time =" + date.gettime (); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.