1. 程式人生 > >使用Java制作驗證碼

使用Java制作驗證碼

使用java制作驗證碼

驗證碼介紹

驗證碼(CAPTCHA)是Completely Automated Public Turing test to tell Computers and Humans Apart(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分用戶是計算機還是人的公共全自動程序。可以防止:惡意破解密碼、刷票、論壇灌水,有效防止某個黑客對某一個特定註冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試,實際上用驗證碼是現在很多網站通行的方式,我們利用比較簡易的方式實現了這個功能。這個問題可以由計算機生成並評判,但是必須只有人類才能解答。由於計算機無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認為是人類。

驗證碼這個詞最早是在2002年由卡內基梅隆大學的路易斯··安、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford所提出。卡內基梅隆大學曾試圖申請此詞使其成為註冊商標, 但該申請於2008年4月21日被拒絕。一種常用的CAPTCHA測試是讓用戶輸入一個扭曲變形的圖片上所顯示的文字或數字,也就是圖文驗證碼,扭曲變形是為了避免被光學字符識別(OCR, Optical Character Recognition)之類的電腦程序自動辨識出圖片上的文數字而失去效果。由於這個測試是由計算機來考人類,而不是標準圖靈測試中那樣由人類來考計算機,人們有時稱CAPTCHA是一種反向圖靈測試。
為了無法看到圖像的身心障礙者,替代的方法是改用語音讀出文數字,為了防止語音辨識分析聲音,聲音的內容會有雜音,這種就是手機語音驗證碼,通過撥打手機的方式告訴用戶驗證碼是什麽。

目前常見的驗證碼類型:

靜態圖文驗證碼

手機短信驗證碼

Email驗證碼

拼圖驗證碼

手機語音驗證碼

GIF動態圖片驗證碼

視頻驗證碼



圖文驗證碼

可以說最早出現的驗證碼就是圖文驗證碼,也是最為常見的驗證碼形式。如圖:技術分享圖片



驗證碼是從服務端生成後發送到客戶端的,驗證碼絕非是套用現成的圖片,而是在服務端內存中臨時生成的,而且通常生成並發送給客戶端之後就會刪除,除此之外驗證碼都是有一個有效時間的一般為60秒到360秒,這些都是為了保證安全性。Java中的java.awt包下有與繪畫相關的類,利用這些工具類,可以生成簡單的圖文驗證碼。下面使用實際代碼演示一下如何生成一個簡單的圖文驗證碼:技術分享圖片技術分享圖片



運行結果:

技術分享圖片





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

Html代碼示例:

技術分享圖片


驗證碼Servlet

技術分享圖片技術分享圖片


處理登錄業務的Servlet技術分享圖片技術分享圖片



運行結果:

技術分享圖片



控制臺打印結果:

技術分享圖片


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

使用Java制作驗證碼