使用Hutool生成和驗證圖形驗證碼
阿新 • • 發佈:2021-01-22
技術標籤:java
版權
1、引入Hutool
<dependency>
<groupId>com.xiaoleilu</groupId>
<artifactId>hutool-all</artifactId>
<version>3.2.3</version>
</dependency>
介紹
驗證碼功能位於com.xiaoleilu.hutool.captcha包中,核心介面為ICaptcha,此介面定義了以下方法:
createCode建立驗證碼,實現類需同時生成隨機驗證碼字串和驗證碼圖片
verify驗證驗證碼是否正確,建議忽略大小寫
write將驗證碼寫出到目標流中
其中write方法只有一個OutputStream,ICaptcha實現類可以根據這個方法封裝寫出到檔案等方法。
AbstractCaptcha為一個ICaptcha抽象實現類,此類實現了驗證碼文字生成、非大小寫敏感的驗證、寫出到流和檔案等方法,通過繼承此抽象類只需實現createImage方法定義圖形生成規則即可。
實現類
1、LineCaptcha線段干擾的驗證碼
生成效果大致如下
//定義圖形驗證碼的長和寬 LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100); //LineCaptcha lineCaptcha = new LineCaptcha(200, 100, 4, 150); //圖形驗證碼寫出,可以寫出到檔案,也可以寫出到流 lineCaptcha.write("d:/line.png"); //驗證圖形驗證碼的有效性,返回boolean值 lineCaptcha.verify("1234");
2、CircleCaptcha 圓圈干擾驗證碼
//定義圖形驗證碼的長、寬、驗證碼字元數、干擾元素個數
CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 20);
//CircleCaptcha captcha = new CircleCaptcha(200, 100, 4, 20);
//圖形驗證碼寫出,可以寫出到檔案,也可以寫出到流
captcha.write("d:/circle.png");
//驗證圖形驗證碼的有效性,返回boolean值
captcha.verify("1234");
3、ShearCaptcha 扭曲干擾驗證碼
//定義圖形驗證碼的長、寬、驗證碼字元數、干擾線寬度
ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 100, 4, 4);
//ShearCaptcha captcha = new ShearCaptcha(200, 100, 4, 4);
//圖形驗證碼寫出,可以寫出到檔案,也可以寫出到流
captcha.write("d:/shear.png");
//驗證圖形驗證碼的有效性,返回boolean值
captcha.verify("1234");