Java SpringBootは複雑な画像検証コードHutoolを生成します

由来

攻撃からの保護がますます包括的になるにつれて、グラフィック検証コードはシンプルで効果的なアンチアタックとアンチグラブの方法であるため、ますます広く使用されています。Hutoolは検証コードの実装を抽象化し、いくつかの単純な検証コードの実装も提供するため、サーバー側の開発コストを大幅に削減できます。

検証コードに対する膨大な需要と以前のプロジェクトでの蓄積のため、Hutoolに検証コードの生成と検証機能を追加しました。

Hutoolの紹介

Hutoolの詳細については、http://hutool.cn/をご覧ください。

<dependency>
    <groupId>com.xiaoleilu</groupId>
    <artifactId>hutool-all</artifactId>
    <version>3.2.3</version>
</dependency>

前書き

検証コード関数はcom.xiaoleilu.hutool.captchaパッケージにあり、コアインターフェイスはですICaptcha。このインターフェイスは次のメソッドを定義します。

  • createCode 検証コードを作成します。実装クラスは、ランダムな検証コード文字列と検証コードイメージを同時に生成する必要があります
  • getCode 確認コードのテキストコンテンツを取得する
  • verify 確認コードが正しいことを確認します。大文字と小文字を無視することをお勧めします
  • write 検証コードをターゲットストリームに書き込みます

その中に、書き込みメソッドは1つしかなくOutputStreamICaptcha実装クラスは、このメソッドに従ってファイルへの書き込みなどのメソッドをカプセル化できます。

AbstractCaptchaこのICaptchaクラスは、抽象実装クラスとして、キャプチャテキストの生成、大文字と小文字を区別しない検証、ストリームやファイルへの書き込みなどのメソッドを実装します。この抽象クラスを継承createImageすることで、グラフィックス生成ルールを定義するメソッドを実装するだけで済みます。

実装クラス

LineCaptcha ラインセグメント干渉の確認コード

効果はおおよそ次のとおりです。 

投稿例:

//定义图形验证码的长和宽
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
//LineCaptcha lineCaptcha = new LineCaptcha(200, 100, 4, 150);
//图形验证码写出,可以写出到文件,也可以写出到流
lineCaptcha.write("d:/line.png");
//验证图形验证码的有效性,返回boolean值
lineCaptcha.verify("1234");

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");

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");

ブラウザに書き出す(サーブレット出力)

ICaptcha captcha = ...;
captcha.write(response.getOutputStream());
//Servlet的OutputStream记得自行关闭哦!

おすすめ

転載: blog.csdn.net/wellse/article/details/106387263