驗證碼功能位於 cn.hutool.captcha 包中,核心接口爲 ICaptcha,此接口定義瞭如下方法:瀏覽器
createCode: 建立驗證碼,實現類需同時生成隨機驗證碼字符串和驗證碼圖片 getCode: 獲取驗證碼的文字內容 verify: 驗證驗證碼是否正確,建議忽略大小寫 write: 將驗證碼寫出到目標流中bash
其中 write 方法只有一個 OutputStream,ICaptcha 實現類能夠根據這個方法封裝寫出到文件等方法。spa
AbstractCaptcha 爲一個 ICaptcha 抽象實現類,此類實現了驗證碼文本生成、非大小寫敏感的驗證、寫出到流和文件等方法,經過繼承此抽象類只需實現 createImage 方法定義圖形生成規則便可。3d
LineCaptcha 線段干擾的驗證碼code
生成效果大體以下:cdn
//定義圖形驗證碼的長和寬
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
//圖形驗證碼寫出,能夠寫出到文件,也能夠寫出到流
lineCaptcha.write("d:/line.png");
//輸出code
Console.log(lineCaptcha.getCode());
//驗證圖形驗證碼的有效性,返回boolean值
lineCaptcha.verify("1234");
//從新生成驗證碼
lineCaptcha.createCode();
lineCaptcha.write("d:/line.png");
//新的驗證碼
Console.log(lineCaptcha.getCode());
//驗證圖形驗證碼的有效性,返回boolean值
lineCaptcha.verify("1234");
複製代碼
CircleCaptcha 圓圈干擾驗證碼blog
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");
複製代碼
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");
複製代碼
寫出到瀏覽器(Servlet輸出)接口
ICaptcha captcha = ...;
captcha.write(response.getOutputStream());
//Servlet的OutputStream記得自行關閉哦!
複製代碼