一種圖片驗證碼的生成方法【
技術領域:
】[0001]本發(fā)明設計計算機領域,特別涉及一種圖片驗證碼生成的方法?!?br>背景技術:
】[0002]信息技術和網絡通訊的高速發(fā)展在給我們帶來便利的同時也滋生了一系列不安定因素。如垃圾郵件的攻擊、批量注冊分發(fā)被盜資源、在線投票系統(tǒng)上的虛假投票,使得網絡的真實性、安全性無法保證。目前網站普遍采用了驗證碼技術來應對這一問題。[0003]信息技術和網絡通訊的高速發(fā)展再給我們帶來便利的同時也滋生了一系列不安定因素。如垃圾郵件的攻擊、批量注冊分發(fā)被盜資源、在線投票系統(tǒng)上的虛假投票,使得網絡的真實性、安全性無法保證。為了保證互聯(lián)網的安全,不少網站采用了驗證碼技術。[0004]驗證碼(CAPTCHA,CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart)全稱為全自動區(qū)分計算機和人類的圖靈測試,起源于1997的AltaVista,目的是阻止URL的自動提交,其基本形式是:在每次向網頁提交信息的時候,系統(tǒng)會自動隨機產生一串數字或符號(即驗證碼),只有在指定的地方正確輸入這些驗證碼才能成功提交信息。驗證碼技術能解決惡意程序對論壇不斷發(fā)表信息這一問題。[0005]從最初的本文數字添加噪點的驗證碼到現在各式各樣的涉及聲音、視頻多方面的驗證碼,各方面專家和學者做出了努力,目前比較主流的是加入噪點干擾線,并對數字或者字母做進行適當扭曲形變的圖片驗證碼,卡耐基梅隆大學后階段推出的recaptcha,比較新穎的還有一些數學公式驗證碼、小游戲驗證碼。[0006]由于OCR技術,尤其是人工智能的發(fā)展,許多驗證碼的破解已不是難題,簡單的數字圖片驗證碼可由分割加上識別算法順利通過。繼續(xù)添加干擾和噪點可以有效阻止分割,卻使得大部分用戶自身都無法正確識別圖片,大大降低了用戶體驗度。許多新推出的游戲驗證碼可以較好解決這個問題,但是其復雜度和數據有限性使得這種驗證碼也無法廣泛使用。[0007]DCG即動態(tài)認知游戲,該驗證碼挑戰(zhàn)用戶執(zhí)行一個類似游戲的認知任務。DCG驗證碼具有高可用性而且不像其他已知的驗證碼,對于中繼攻擊添加了一些阻力,但他們也容易受到我們的新的基于字典的自動化攻擊。如公開于2012年12月20日的申請?zhí)枮閁S20120323700Al的美國專利公開了一種驗證碼技術方案,該驗證碼要求用戶完成一個任務,即生成一排有一定順序的物體,由用戶判斷并將符合條件的物體拖動到指定位置,如正確完成操作,通過驗證,這種非驗證碼對OCR等有很好的阻止作用,但是由于數據庫本身的局限性而無法抵擋暴力攻擊也不利于推廣,形式復雜。[0008]傳統(tǒng)字符驗證碼,將一串隨機產生的數字或符號,生成一幅圖片,在所述圖片中增加一些干擾線、噪點,局部膨脹或扭曲等,來生成一張驗證碼圖片,因其數據量大可以有效應對窮舉攻擊,但是OCR(OpticalCharacterRecognition,光學字符識別)技術的發(fā)展使之已經缺乏安全性。[0009]因此,現有的驗證碼技術存在不足,有必要改進?!?br/>發(fā)明內容】[0010]本發(fā)明所要解決的技術問題是提供一種通過采用行為式驗證獲得更高安全、能有效阻止機器人攻擊且不需要通過傳統(tǒng)鍵盤輸入來驗證的圖片驗證碼生成的方法。[0011]為了解決上述問題,本發(fā)明提供的技術方案如下:一種圖片驗證碼生成的方法,包括以下步驟:(1)客戶端發(fā)送獲取驗證碼請求;(2)服務端接收客戶端請求并做如下處理:步驟A,生成基準圖:A1、生成四位隨機字符寫入圖片,并在所述的圖片中繪制噪點和干擾線,在服務器端保存此圖片作為基準圖片;A2、生成一個[0,N-1]的隨機數字T作為基準圖片編號,并在服務器端保存,其中N為大于或等于2的整數;步驟B,以基準圖片母版,生成N-I張基準圖片的拷貝圖片,并依次用[0,N-1]中不等于T的數字作為N-I張拷貝圖片的編號P;步驟C,分別對每張張拷貝圖片做扭曲處理。[0012]步驟D,生成長圖:D1、將扭曲處理后的N-I張拷貝圖片和基準圖片按編號從小到大的順序排列拼接生成一張長圖圖片;D2、將生成的長圖圖片發(fā)送給客戶端;(3)客戶端接收長圖并接受用戶驗證,操作如下:E1、客戶端接收到長圖并隨機顯示長圖中的一副圖片給用戶:E2、用戶拖動長圖圖片,選擇出其中的一副圖片,提交;E3、跟據用戶選擇的圖片向服務端發(fā)送該圖片的編號;(4)服務端驗證:服務端接收客戶端返回的編號,并將編號與預存基準圖片編號T對比,如果一樣,則通過驗證,否則驗證失敗,重復步驟(2)。[0013]優(yōu)選地,步驟C所述的對拷貝圖扭曲處理是通過如下方法實現扭曲的:C1、將該張拷貝圖片按X行Y列劃分為X*Y個小方格,X、Y均為大于或等于4的整數,并將每個方格從上往下從左往右依次編號為〇、1、2、3至Χ*Υ。[0014]C2、給該張拷貝圖片設定一個參數stable;并通過如下方式求取stable的值:【主權項】1.一種圖片驗證碼的生成方法,其特征在于,包括以下步驟:(1)客戶端發(fā)送獲取驗證碼請求;(2)服務端接收客戶端請求并做如下處理:步驟A,生成基準圖:A1、生成四位隨機字符寫入圖片,并在所述的圖片中繪制噪點和干擾線,在服務器端保存此圖片作為基準圖片;A2、生成一個[0,N-1]的隨機數字T作為基準圖片編號,并在服務器端保存,其中N為大于或等于2的整數;步驟B,以基準圖片母版,生成N-1張基準圖片的拷貝圖片,并依次用[0,N-1]中不等于T的數字作為N-1張拷貝圖片的編號P;步驟C,分別對每張張拷貝圖片做扭曲處理;步驟D,生成長圖:D1、將扭曲處理后的N-1張拷貝圖片和基準圖片按編號從小到大的順序排列拼接生成一張長圖圖片;D2、將生成的長圖圖片發(fā)送給客戶端;(3)客戶端接收長圖并接受用戶驗證,操作如下:E1、客戶端接收到長圖并隨機顯示長圖中的一副圖片給用戶:E2、用戶拖動長圖圖片,選擇出其中的一副圖片,提交;E3、跟據用戶選擇的圖片向服務端發(fā)送該圖片的編號;(4)服務端驗證:服務端接收客戶端返回的編號,并將編號與預存基準圖片編號T對比,如果一樣,則通過驗證,否則驗證失敗,重復步驟(2)。2.根據權利要求1所述的圖片驗證碼生成的方法,其特征在于:步驟C所述的對拷貝圖扭曲處理是通過如下方法實現扭曲的:C1、將該張拷貝圖片按X行Y列劃分為X*Y個小方格,X、Y均為大于或等于4的整數,并將每個方格從上往下從左往右依次編號為〇、1、2、3至X*Y;C2、給該張拷貝圖片設定一個參數stable;并通過如下方式求取stable的值:其中,i=P_lC3、根據stable的值,通過如下方式打亂該張拷貝圖片中方格的排列順序,生成扭曲圖片:當stable=0時,圖片不發(fā)生任何改變;當stable為正值時,將編號為0至stable-1方格的順序打亂;當stable值為負值時,將編號為X*Y_stable+l至X*Y_1方格的順序打亂。3.根據權利要求1所述的圖片驗證碼生成的方法,其特征在于:步驟A中所述的隨機字符是通過線性同余法生成的。4.根據權利要求1所述的圖片驗證碼生成的方法,其特征在于:步驟E中所述的E2步驟,在顯示給用戶的長圖圖片的下方添加有滑塊組件,使用戶通過左右移動滑塊來左右拖動長圖圖片。5.根據權利要求1所述的圖片驗證碼生成的方法,其特征在于:步驟A中所述的A1步驟,首先將該基準圖片壓縮成50*50px至500*500px后再將該圖片保存。6.根據權利要求1所述的圖片驗證碼生成的方法,其特征在于:步驟D中的所述的步驟D1是將N-1張拷貝圖片和基準圖片按編號從小到大的順序排列拼接生成一張首尾相接的長圖圖片。7.根據權利要求2所述的圖片驗證碼生成的方法,其特征在于:所述的N=30,所述的X=8,所述的Y=8?!緦@勘景l(fā)明涉及一種圖片驗證碼生成的方法,包括首先生成背景圖片,加入4個隨機生成的字符和數字、噪點、干擾線,由此生成基準圖片,并給基準圖片隨機編號;然后,以基準圖片為母板,生成多幅扭曲的圖片,并給新生成扭曲的圖片編號,并與基準圖片按照編號組成一張長圖發(fā)送給客戶端,用戶拖動長圖挑選出基準圖片以此進行驗證。該驗證方法,通過采用行為式驗證獲得更高安全、能有效阻止機器人攻擊且不需要通過傳統(tǒng)鍵盤輸入。【IPC分類】G06T11-60,H04L29-06,G06F21-36【公開號】CN104618350【申請?zhí)枴緾N201510019296【發(fā)明人】歐陽建權,王澤穎,羅新高,唐歡容【申請人】湘潭大學【公開日】2015年5月13日【申請日】2015年1月15日