Java Implementation Verification Code (bottom)

Source: Internet
Author: User
Tags arithmetic

The last one said two ways to implement the verification code, let me talk about other methods.

(a) Implementation of Chinese verification Code

In fact, the implementation of Chinese verification code is almost the same as the alphanumeric, just the candidate letters and numbers to Chinese characters, and then the same random number of selected Chinese characters, the final output of the image. The Chinese character set chooses the commonly used Chinese character to be possible:

String base = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9" + "\u4e0a\u7 740\u4e2a\u5730\u5230\u5927\u91cc\u8bf4\u5c31\u53bb\u5b50\u5f97\u4e5f\u548c "+" \u90a3\u8981\u4e0b\u770b\u5 929\u65f6\u8fc7\u51fa\u5c0f\u4e48\u8d77\u4f60\u90fd\u628a "+" \u597d\u8fd8\u591a\u6ca1\u4e3a\u53c8\u53ef\u5 bb6\u5b66\u53ea\u4ee5\u4e3b\u4f1a\u6837 "+" \u5e74\u60f3\u751f\u540c\u8001\u4e2d\u5341\u4ece\u81ea\u9762\u5 24d\u5934\u9053\u5b83 "+" \u540e\u7136\u8d70\u5f88\u50cf\u89c1\u4e24\u7528\u5979\u56fd\u52a8\u8fdb\u6210\u5                6de "+" \U4EC0\U8FB9\U4F5C\U5BF9\U5F00\U800C\U5DF1\U4E9B\U73B0\U5C71\U6C11\U5019\U7ECF\U53D1 "+ "\u5de5\u5411\u4e8b\u547d\u7ed9\u957f\u6c34\u51e0\u4e49\u4e09\u58f0\u4e8e\u9ad8\u624b" + "\u77e5\u7406\ u773c\u5fd7\u70b9\u5fc3\u6218\u4e8c\u95ee\u4f46\u8eab\u65b9\u5b9e\u5403 "+" \u505a\u53eb\u5f53\u4f4f\u542c\ u9769\u6253\u5462\u771f\u5168\u624d\u56db\u5df2\u6240 "+" \u654c\u4e4b\u6700\u5149\u4ea7\u60c5\u8def\u5206\u603b\u6761\u767d\u8bdd\                U4e1c\u5e2d "+" \u6b21\u4eb2\u5982\u88ab\u82b1\u53e3\u653e\u513f\u5e38\u6c14\u4e94\u7b2c\u4f7f\u5199 "+ "\u519b\u5427\u6587\u8fd0\u518d\u679c\u600e\u5b9a\u8bb8\u5feb\u660e\u884c\u56e0\u522b" + "\u98d e\u5916\u6811\u7269\u6d3b\u90e8\u95e8\u65e0\u5f80\u8239\u671b\u65b0\u5e26\u961f "+" \u5148\u529b\u5b8c\u537 4\u7ad9\u4ee3\u5458\u673a\u66f4\u4e5d\u60a8\u6bcf\u98ce\u7ea7 "+" \u8ddf\u7b11\u554a\u5b69\u4e07\u5c11\u76f 4\U610F\U591C\U6BD4\U9636\U8FDE\U8F66\U91CD "+" \u4fbf\u6597\u9a6c\u54ea\u5316\u592a\u6307\u53d8\u793e\u4f3 C\u58eb\u8005\u5e72\u77f3 "+" \u6ee1\u65e5\u51b3\u767e\u539f\u62ff\u7fa4\u7a76\u5404\u516d\u672c\u601d\u89e                3\U7ACB "+" \u6cb3\u6751\u516b\u96be\u65e9\u8bba\u5417\u6839\u5171\u8ba9\u76f8\u7814\u4eca\u5176 "+ "\u4e66\u5750\u63a5\u5e94\u5173\u4fe1\u89c9\u6b65\u53cd\u5904\u8bb0\u5c06\u5343\u627e "+" \u4e89\u9886\u6216\u5e08\u7ed3\u5 757\u8dd1\u8c01\u8349\u8d8a\u5b57\u52a0\u811a\u7d27 "+" \u7231\u7b49\u4e60\u9635\u6015\u6708\u9752\u534a\u7 06B\U6CD5\U9898\U5EFA\U8D76\U4F4D "+" \u5531\u6d77\u4e03\u5973\u4efb\u4ef6\u611f\u51c6\u5f20\u56e2\u5c4b\u7                 9bb\u8272\u8138 "+" \u7247\u79d1\u5012\u775b\u5229\u4e16\u521a\u4e14\u7531\u9001\u5207\u661f\u5bfc\u665a "+ "\u8868\u591f\u6574\u8ba4\u54cd\u96ea\u6d41\u672a\u573a\u8be5\u5e76\u5e95\u6df1\u523b" + "\ u5e73\u4f1f\u5fd9\u63d0\u786e\u8fd1\u4eae\u8f7b\u8bb2\u519c\u53e4\u9ed1\u544a\u754c "+" \u62c9\u540d\u5440\ u571f\u6e05\u9633\u7167\u529e\u53f2\u6539\u5386\u8f6c\u753b\u9020 "+" \u5634\u6b64\u6cbb\u5317\u5fc5\u670d\ U96E8\U7A7F\U5185\U8BC6\U9A8C\U4F20\U4E1A\U83DC "+" \u722c\u7761\u5174\u5f62\u91cf\u54b1\u89c2\u82e6\u4f53\ U4f17\u901a\u51b2\u5408\u7834 "+" \U53CB\U5EA6\U672F\U996D\U516C\U65C1\U623F\U6781\U5357\U67AA\U8BFB\U6C99\U5C81\U7EBF "+ "\u91ce\u575a\u7a7a\u6536\u7b97\u81f3\u653f\u57ce\u52b3\u843d\u94b1\u7279\u56f4\u5f1f" + "\u80dc\u655 9\u70ed\u5c55\u5305\u6b4c\u7c7b\u6e10\u5f3a\u6570\u4e61\u547c\u6027\u97f3 "+" \u7b54\u54e5\u9645\u65e7\u795 e\u5ea7\u7ae0\u5e2e\u5566\u53d7\u7cfb\u4ee4\u8df3\u975e "+" \u4f55\u725b\u53d6\u5165\u5cb8\u6562\u6389\u5ff d\u79cd\u88c5\u9876\u6025\u6797\u505c "+" \u606f\u53e5\u533a\u8863\u822c\u62a5\u53f6\u538b\u6162\u53d4\u80c C\u7ec6 ";

Loop select Chinese characters, output image:

Random r = new random (); int index; StringBuffer sb = new StringBuffer (); for (int i = 0; i < 4; i++) {String ch = base.charat (R.nextint (Base.length ())) + " "; G.setcolor (new Color (R.nextint), R.nextint (188), R.nextint (255)); g.drawstring (CH, (i*15) +3); Sb.append (CH) ;} Request.getsession (). SetAttribute ("Piccode", sb.tostring ()); Imageio.write (BI, "JPG", Response.getoutputstream ());

Background processing Verify that the verification code is the same as the correct, the same through the session to obtain a verification code and user input comparison and then process the page. Note that I started in the implementation of always appear in Chinese garbled, I went online to check the original Tomcat under the request appears in Chinese garbled because GET request by default is encoded in ISO8859-1 format, Even if the request.setcharacterencoding is set on the page, some blogs suggest changing to Tomcat's server.xml, and some say that there are many ways to change the GET request to a POST request, and so on. Later I thought, since the request with ISO8859-1 code, I use Request.getparameter to get content and then to Utf-8 not be able to, and this is relatively simple, so I tried to do, so that solves the problem:

        @Overrideprotected void doget (HttpServletRequest request, httpservletresponse response) throws Servletexception, IOException {String piccode = (string) request.getsession (). getattribute ("Piccode"); String Checkcode = Request.getparameter ("Checkcode"); Get requests are encoded by default in iso8859-1 format and need to be converted to Utf-8checkcode = new String (checkcode.getbytes ("iso8859-1"), "UTF-8"); Response.setcontenttype ("Text/html;charset=utf-8"); Set the format of this document to prevent garbled printwriter out = Response.getwriter (); if (Checkcode.equals (Piccode)) {out.println ("Verify code entered correctly! ");} else {out.print ("Captcha input Error! ");} Out.println (Checkcode); Out.flush (); Out.close ();}    

The final effect is as follows:

  

  

(b) Arithmetic verification code

The arithmetic verification code is also similar. Generate a verification code with random number generated two operands, in the random selection operator, generally only use +,-,*, less use/, because with/may want to avoid the divisor of 0, if you want to appear multiplication, then the best two operands are set less than 10 (do you want to let users lose a verification code to use the calculator beside press Press?)! )。 At last, the result of the operation is saved by the session, and then the check is taken as equal, then processed:

                char[] op = "+-". ToCharArray (); Random r = new random (), int index, LEN1 = op.length;int result = 0, Firstnum = 0, Secondnum = 0;char operation = ' 0 '; for ( int i = 0; I < 4; i++) {if (I! = 1) index = R.nextint (+), Else index = R.nextint (LEN1); G.setcolor (New Color (R.nextint (), R.nextint (188), R.nextint (255))); if (i = = 0) {g.drawstring (index+ "", (i*15) +3); firstnum = index;} else if (i = = 2) {g.drawstring (index+ "", (i*15) +3); secondnum = index;} else if (i = = 1) {g.drawstring (op[index]+ "", (i*15) +3); operation = Op[index];} else {g.drawstring ("=", (i*15) +3, 18);}} if (Operation = = ' + ') result = Firstnum+secondnum;else if (Operation = = '-') result = Firstnum-secondnum;else if (operatio n = = ' * ') result = Firstnum*secondnum;request.getsession (). SetAttribute ("result", result);    


Final effect:

  

  Full code See: Https://github.com/lingd3/Captcha

Java Implementation Verification Code (bottom)

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.