1. 程式人生 > >Java實現中文算數驗證碼(算數運算+-*/)

Java實現中文算數驗證碼(算數運算+-*/)

為了防止,頁面向資料庫暴力註冊入力,使用者登入暴力破解,所以加入驗證碼,驗證碼無法被軟體獲取上邊的內容(加入算數計算,更加安全),所以在現在技術,暫時安全。

先看效果圖:

第一次載入比較慢,防止無法載入驗證碼顯示,後臺獲取準備好的預設正在載入圖片(靜態圖片),後臺圖片獲取好後,替代。


驗證碼效果圖:

              

後臺Java圖片實現類VerificationCodeTool:

  1. package com.tsXs.fileshare.tools;  
  2. import java.awt.Color;  
  3. import
     java.awt.Font;  
  4. import java.awt.Graphics;  
  5. import java.awt.Graphics2D;  
  6. import java.awt.image.BufferedImage;  
  7. import java.util.HashMap;  
  8. import java.util.Map;  
  9. import java.util.Random;  
  10. import org.apache.log4j.Logger;  
  11. /** 
  12.  *  
  13.  * ClassName: VerificationCodeTool <br/> 
  14.  * Description: creat verification code <br/>
     
  15.  * Date: 2015-3-3 下午08:37:55 <br/> 
  16.  * <br/> 
  17.  *  
  18.  * @author [email protected] 
  19.  *  
  20.  * first made 
  21.  * @version 1.0.0<br/> 
  22.  * 
  23.  */
  24. publicclass VerificationCodeTool {  
  25.     //LOG
  26.     privatestaticfinal Logger LOG =Logger.getLogger(VerificationCodeTool.class);  
  27.     //verification code image width
  28.     privatestaticfinalint IMG_WIDTH=146;  
  29.     //verification code image height
  30.     privatestaticfinalint IMG_HEIGHT=30;  
  31.     //The number of interference lines
  32.     privatestaticfinalint DISTURB_LINE_SIZE = 15;  
  33.     //generate a random number
  34.     private Random random = new Random();  
  35.     //result
  36.     privateint xyresult;  
  37.     //result random string
  38.     private String randomString;  
  39.     //Chinese Numbers
  40. //  private static final String [] CNUMBERS = "零,一,二,三,四,五,六,七,八,九,十".split(",");
  41.     //零一二三四五六七八九十乘除加減
  42.     //Here, must be java Unicode code
  43.     privatestaticfinal String CVCNUMBERS = "\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u4E58\u9664\u52A0\u51CF";  
  44.     //Definition of drawings in the captcha characters font, font name, font style, font size
  45.     //static final font : In Chinese characters garbled
  46.     privatefinal Font font = new Font("黑體", Font.BOLD, 18);  
  47.     //data operator
  48.     privatestaticfinal Map<String, Integer> OPMap = new HashMap<String, Integer>();  
  49.     static{  
  50.         OPMap.put("*"11);  
  51.         OPMap.put("/"12);  
  52.         OPMap.put("+"13);  
  53.         OPMap.put("-"14);  
  54.     }  
  55.     /** 
  56.      * The generation of image  verification code 
  57.      * */
  58.     public BufferedImage drawVerificationCodeImage(){  
  59.         //image
  60.         BufferedImage image = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, BufferedImage.TYPE_INT_RGB);  
  61.         //In memory to create a brush
  62.         Graphics g = image.getGraphics();  
  63.         //Set the brush color
  64. //      g.setColor(getRandomColor(200,250));
  65.         g.setColor(Color.WHITE);  
  66.         //Fill the background color, using the current brush colour changing background color images
  67.         //The meaning of the four parameters respectively, starting x coordinates, starting y, width, height.
  68.         //image background
  69.         g.fillRect(00, IMG_WIDTH, IMG_HEIGHT);  
  70.         //Set the brush color
  71.         g.setColor(getRandomColor(200,250));  
  72.         //image border
  73.         g.drawRect(00, IMG_WIDTH-2, IMG_HEIGHT-2);  
  74.         //Set disturb line color
  75.         g.setColor(getRandomColor(110133));  
  76.         //Generate random interference lines
  77.         for(int i =0;i < DISTURB_LINE_SIZE; i++){  
  78.             drawDisturbLine1(g);  
  79.             drawDisturbLine2(g);  
  80.         }  
  81.         //Generate a random number, set return data
  82.         getRandomMathString();  
  83.         LOG.info("驗證碼 : "+randomString);  
  84.         LOG.info("驗證碼結果 : "+xyresult);  
  85.         //The generated random string used to save the system
  86.         StringBuffer logsu = new StringBuffer();  
  87.         for(int j=0,k = randomString.length(); j < k; j++){  
  88.           int chid = 0;  
  89.           if(j==1){  
  90.               chid = OPMap.get(String.valueOf(randomString.charAt(j)));  
  91.           }else{  
  92.               chid = Integer.parseInt(String.valueOf(randomString.charAt(j)));  
  93.           }  
  94.           String ch = String.valueOf(CVCNUMBERS.charAt(chid));  
  95.           logsu.append(ch);  
  96.           drawRandomString((Graphics2D)g,ch, j);  
  97.         }  
  98.         //= ?
  99.         drawRandomString((Graphics2D)g,"\u7B49\u4E8E\uFF1F"3);  
  100. 相關推薦

    Java實現中文算數驗證(算數運算+-*/)

    為了防止,頁面向資料庫暴力註冊入力,使用者登入暴力破解,所以加入驗證碼,驗證碼無法被軟體獲取上邊的內容(加入算數計算,更加安全),所以在現在技術,暫時安全。 先看效果圖: 第一次載入比較慢,防止無法載入驗證碼顯示,後臺獲取準備好的預設正在載入圖片(靜態圖片

    java 實現登錄驗證 (kaptcha 驗證組件)

    內容 清除 pub auto 二維碼 我們 constant nts extend 驗證碼的作用: 1、防止廣告機註冊和發帖、評論。2、防止暴力破解密碼,特別是有管理員權限的密碼。 在這裏介紹一種非常實用的驗證碼生成工具:kaptcha 這個工具,可以生成各種樣式的驗證碼

    【原始碼分享】java實現對接簡訊驗證應用功能

    今天公司提出一個需求,要在現有專案上收集註冊使用者的真實手機號,由於之前沒有接觸過這一塊,只能尋求度孃的幫助,經過一天的努力,終於完成了,現整理記錄下已備查閱。 1 解決方案:在註冊時要求使用者進行手機驗證。2 尋找簡訊供應商:由於對這一塊不是太懂,大學同學推薦一家他們公司在用的給我。3 程式碼實現 首先到

    JAVA實現註冊頁面驗證重新整理

    撰寫人——軟體二班——陳喜平 需要的工具:tomcat/eclipse/jdk/(注意jdk版本要和tomca相匹配,以及注意區分32位和64位) 步驟:依次建立servlet (伺服器需要)/ jsp(頁面需要) 引入web.xml 如圖所示: doget方法裡面的程式碼: prot

    JAVA實現手機簡訊驗證

    手機簡訊驗證碼介面來自於網易雲手機簡訊介面 package com.netease.code; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.http.H

    Java實現點選驗證

    效果 話不多說,先看實現的效果,其中方框為點選區域,真實場景要去掉此方框 核心流程分析 隨機獲取背景圖片 隨機獲取中文字元 在背景圖片中隨機獲取中文字元位置 設定中文旋轉隨機角度、字型顏色 儲存生成文字的座標集合、提示資訊、驗證碼圖片 前端根據提示資訊獲取相

    java 實現傳送簡訊驗證功能

    如何使用java + maven的專案環境傳送簡訊驗證碼,本文使用的是榛子云簡訊 的介面。 1. 安裝sdk 下載地址: http://smsow.zhenzikj.com/doc/sdk.html 下載下來是jar檔案,需要將jar釋出到本地的maven倉庫中, 在c

    java實現圖片隨機驗證

    轉自:https://blog.csdn.net/zhulin40/article/details/51899487<div class="form-group col-lg-6"> <label for="id" class="col-sm-

    java 實現傳送簡訊驗證(網易雲)

    連結:https://pan.baidu.com/s/1saRmzciNQWpFxHJRN0ISTg 密碼:siyt 實現傳送驗證碼的工程下載 1、我們開啟這個工程,檢視其中的程式碼 package com.ghj.test; import java.io.IOExce

    java實現郵件傳送驗證

    java實現郵件傳送驗證碼    建議不要用qq郵箱,我使用qq郵箱直接一直給我報530錯誤,我一直認為我程式碼寫的有錯誤或者POP3/SMTP服務沒弄好。所以建議註冊個別的郵箱,我就申請了個網易163郵箱瞬間就好了。所以去申請個別的郵箱吧。   用郵

    Java實現超簡單驗證識別

    閒來想實現程式模擬登陸一個系統,說白了,就是寫個簡單的爬蟲,但是無奈,遇到了數字圖片驗證碼,在查閱了一些方案以後,遂決定自己手寫程式碼實現驗證碼識別,分享一下整個過程。 圖片驗證碼是什麼 圖片驗證碼,這個大家應該都見過。最普遍的圖片驗證碼就是一張

    java實現傳送手機驗證功能

    2. 註冊好之後,點選 使用者中心 -> 賬戶管理,就會進入如下介面 (順便提一下,新註冊的使用者,平臺會免費贈送你10元,足夠大家學習和使用了,所以不用擔心需要充錢)  你需要做的就是獲取你自己的 ACCOUNT SID 和 AUTH TOKEN 3. 需要

    Java實現身份證號碼驗證分享

    分隔 toc bst nbsp port birt random exti 一位數 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar;

    java生成圖片驗證(字母 | 運算 | 漢字)

    java生成圖片驗證碼(字母|運算|漢字) 先看下以下效果圖,ui請勿參考。。 1.首先看運算的,左邊正確輸入,右邊錯誤輸入,驗證碼超時時間是1分,下面超時示例 字母驗證碼和漢字 2.後臺工具類程式碼 package com.ljm.verificati

    java後臺呼叫簡訊介面,實現傳送簡訊驗證的控制層實現

    1.設計:使用者填寫手機號,點選獲取驗證碼按鈕,controller層獲得所要傳送驗證碼的手機號,隨機生成六位數的驗證碼。呼叫傳送簡訊介面url向此手機號傳送驗證碼。注意:下面的程式碼採用的是雲信使的簡訊驗證碼介面,不同的驗證碼更換不同的url格式,即可。 `

    java Swing中隨機驗證實現

    LoginJFrame:(登入介面) package com.myproject.ui; import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.eve

    Java程式碼生成圖片驗證實現

     介紹一個使用Java程式碼生成隨機圖片驗證碼的示例 可以直接配置成Servlet,在頁面直接呼叫 Java程式碼隨機生成圖片驗證碼 package com.rchm.util.images; import java.awt.Color; import java.

    JAVA呼叫中國網建介面實現傳送簡訊驗證

    import java.io.UnsupportedEncodingException; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.Http

    spring mvc實現登錄驗證

    period nbsp def fine 顯示 pin asi sin current 一、實現圖形驗證碼的基礎類 VerifyCodeUtils.java,這個類是從網上摘抄的~ package com.comp.common; import java.aw

    java實現生成二維

    ron isp -a 數組 技術分享 rar cep 代碼實現 lac java實現生成二維碼 二維碼vs條形碼 最大的區別就是: