使用Java製作驗證碼

來源:互聯網
上載者:User

標籤:使用java製作驗證碼

驗證碼介紹

  驗證碼(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自動區分電腦和人類的圖靈測試)的縮寫,是一種區分使用者是電腦還是人的公用全Bot。可以防止:惡意破解密碼、刷票、論壇灌水,有效防止某個駭客對某一個特定註冊使用者用特定程式暴力破解方式進行不斷的登陸嘗試,實際上用驗證碼是現在很多網站通行的方式,我們利用比較簡易的方式實現了這個功能。這個問題可以由電腦產生並評判,但是必須只有人類才能解答。由於電腦無法解答CAPTCHA的問題,所以回答出問題的使用者就可以被認為是人類。驗證碼這個詞最早是在2002年由卡內基梅隆大學的路易斯·馮·安、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford所提出。卡內基梅隆大學曾試圖申請此詞使其成為註冊商標, 但該申請於2008年4月21日被拒絕。一種常用的CAPTCHA測試是讓使用者輸入一個扭曲變形的圖片上所顯示的文字或數字,也就是圖文驗證碼,扭曲變形是為了避免被光學字元辨識(OCR, Optical Character Recognition)之類的電腦程式自動辨識出圖片上的文數字而失去效果。由於這個測試是由電腦來考人類,而不是標準圖靈測試中那樣由人類來考電腦,人們有時稱CAPTCHA是一種反向圖靈測試。為了無法看到映像的身心障礙者,替代的方法是改用語音讀出文數字,為了防止語音辨識分析聲音,聲音的內容會有雜音,這種就是手機語音驗證碼,通過撥打手機的方式告訴使用者驗證碼是什麼。

目前常見的驗證碼類型:

     靜態圖文驗證碼

手機簡訊驗證碼

Email驗證碼

拼圖驗證碼

手機語音驗證碼

GIF動態圖片驗證碼

視頻驗證碼



圖文驗證碼

可以說最早出現的驗證碼就是圖文驗證碼,也是最為常見的驗證碼形式。650) this.width=650;" style="font-family:‘宋體‘;font-size:20px;color:rgb(1,1,1);" name="b9dc46a8-dcb9-4777-93d5-d6ae7797dfb9" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/b9dc46a8-dcb9-4777-93d5-d6ae7797dfb9.jpg?resizeSmall&width=832" width="217" alt="b9dc46a8-dcb9-4777-93d5-d6ae7797dfb9.jpg" />


   驗證碼是從服務端產生後發送到用戶端的,驗證碼絕非是套用現成的圖片,而是在服務端記憶體中臨時產生的,而且通常產生並發送給用戶端之後就會刪除,除此之外驗證碼都是有一個有效時間的一般為60秒到360秒,這些都是為了保證安全性。在Java中的java.awt包下有與繪畫相關的類,利用這些工具類,可以產生簡單的圖文驗證碼。下面使用實際代碼示範一下如何產生一個簡單的圖文驗證碼:650) this.width=650;" name="f06af006-c21f-4cc3-93b0-ee653379e1b3" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/f06af006-c21f-4cc3-93b0-ee653379e1b3.jpg?resizeSmall&width=832" width="554" alt="f06af006-c21f-4cc3-93b0-ee653379e1b3.jpg" />650) this.width=650;" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/8af47dbc-cf46-476c-b599-710254ec0b72.jpg?resizeSmall&width=832" width="554" alt="8af47dbc-cf46-476c-b599-710254ec0b72.jpg" />



運行結果:

650) this.width=650;" style="font-family:‘宋體‘;font-size:20px;" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/4c0dfee0-9774-4cac-9c97-67543f693aed.jpg?resizeSmall&width=832" width="223" alt="4c0dfee0-9774-4cac-9c97-67543f693aed.jpg" />





把驗證碼應用在登入驗證中:

Html程式碼範例:

650) this.width=650;" style="font-family:‘宋體‘;font-size:20px;" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/45a63184-0a9f-4fa1-a444-c5e28cf8576c.jpg?resizeSmall&width=832" width="554" alt="45a63184-0a9f-4fa1-a444-c5e28cf8576c.jpg" />


驗證碼Servlet:

650) this.width=650;" style="font-family:‘宋體‘;font-size:20px;" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/4d7d7e13-3a25-4ce4-acda-1caaa1db4f14.jpg?resizeSmall&width=832" width="553" alt="4d7d7e13-3a25-4ce4-acda-1caaa1db4f14.jpg" />650) this.width=650;" name="f0ff3abd-c242-439f-ab73-07afc685cfa8" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/f0ff3abd-c242-439f-ab73-07afc685cfa8.jpg?resizeSmall&width=832" width="553" alt="f0ff3abd-c242-439f-ab73-07afc685cfa8.jpg" />


處理登入業務的Servlet:650) this.width=650;" style="font-family:‘宋體‘;font-size:20px;" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/2c7c6e4a-ab8f-41b5-b48f-6a07fca69ac2.jpg?resizeSmall&width=832" width="554" alt="2c7c6e4a-ab8f-41b5-b48f-6a07fca69ac2.jpg" />650) this.width=650;" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/14bedae0-6010-4630-92fc-7bc212d5b8b7.jpg?resizeSmall&width=832" width="553" alt="14bedae0-6010-4630-92fc-7bc212d5b8b7.jpg" />



運行結果:

650) this.width=650;" style="font-family:‘宋體‘;font-size:20px;" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/43cef0b0-c4d5-4b50-9fce-a25c1eb71388.jpg?resizeSmall&width=832" width="520" alt="43cef0b0-c4d5-4b50-9fce-a25c1eb71388.jpg" />



控制台列印結果:

650) this.width=650;" style="font-family:‘宋體‘;font-size:20px;" src="https://app.yinxiang.com/shard/s14/nl/18380775/af7b06c2-f171-436a-a1ac-35bed5335c0e/res/4c268079-c32f-413d-a5ae-cdf9a040d126.jpg?resizeSmall&width=832" width="329" alt="4c268079-c32f-413d-a5ae-cdf9a040d126.jpg" />


本文出自 “zero” 部落格,請務必保留此出處http://zero01.blog.51cto.com/12831981/1983314

使用Java製作驗證碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.