驗證碼圖片生成方法及裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及互聯(lián)網安全技術領域,尤其涉及一種驗證碼圖片生成方法及裝置。
【背景技術】
[0002]隨著網絡的普及,網站的運行性能和安全性問題也越來越突出。在互聯(lián)網安全技術領域,為防止有人利用機器人程序自動批量注冊和登錄網站、或者對特定的注冊用戶使用特定程序以暴力破解方式不斷登錄,造成系統(tǒng)資源的嚴重耗費,威脅網站和用戶信息的安全,網站通常使用一種公共全自動模塊來區(qū)分某一個請求背后是人還是機器人程序,這類模塊稱為驗證碼,常以圖片的形式呈現(xiàn),呈現(xiàn)驗證碼的圖片稱之為驗證碼圖片。
[0003]驗證碼圖片通常根據(jù)隨機產生的一串數(shù)字或符號生成,由用戶肉眼識別圖片中的數(shù)字或符號,將數(shù)字或符號輸入表單后提交給網站驗證。但由數(shù)字或符號生成的驗證碼圖片容易被現(xiàn)在的機器人程序通過OCR (Optical Character Recognit1n,光學字符識別)技術將驗證碼(即數(shù)字或字符)識別出來。另一方面,一般驗證碼圖片的生成方法是在背景圖中設置驗證碼區(qū)域,然后將隨機生成的數(shù)字或符號填充于驗證碼區(qū)域中,為了加大驗證碼圖片被機器人程序識別的難度,通常會對數(shù)字或符號進行扭曲處理,以及在驗證碼圖片中加上噪聲、紋理等干擾,降低數(shù)字和符號與圖片背景的區(qū)別度,使機器人程序難以直接提取到圖片驗證碼中的數(shù)字或符號信息。但數(shù)字或符號的扭曲處理,及扭曲處理之后在背景圖片上對數(shù)字和符號的填充處理,這些過程往往復雜而且耗費資源,再加上噪聲和紋理處理,驗證碼圖片生成的速度和效率會進一步降低,使得驗證碼不能快速顯示,用戶往往需要刷新多次才能看到驗證碼圖片;而且數(shù)字或符號扭曲后,以及驗證碼圖片添加噪聲和紋理后,數(shù)字和符號顯示不清晰,用戶識別的難度加大,輸入錯誤次數(shù)增加,常需要多次點擊更換驗證碼圖片才能獲得清晰可辨的驗證碼,用戶體驗不佳。
【發(fā)明內容】
[0004]為克服相關技術中驗證碼圖片易被破解和生成效率低的問題,本申請?zhí)峁┮环N驗證碼圖片生成方法及裝置。
[0005]根據(jù)本申請實施例的第一方面,提供一種驗證碼圖片生成方法,包括:
[0006]生成一個預設長度的數(shù)字;
[0007]獲取所述數(shù)字每個數(shù)位的數(shù)值;
[0008]根據(jù)每個數(shù)位的數(shù)值分別在預先建立的算盤圖片庫中選取對應的算珠檔圖片,所述算珠檔圖片中算珠所表示的數(shù)值與獲取的所述數(shù)位的數(shù)值對應;
[0009]將選取的所述算珠檔圖片按預設順序排列并拼接,生成驗證碼圖片。
[0010]可選的,所述的驗證碼圖片生成方法,還包括:
[0011]在預先建立的算盤圖片庫中隨機選取預設個數(shù)表示整數(shù)0的算珠檔圖片;
[0012]將表示整數(shù)0的算珠檔圖片分組拼接在按預設順序排列并拼接的算珠檔圖片的兩側,生成驗證碼圖片。
[0013]可選的,所述的驗證碼圖片生成方法,還包括:
[0014]在預先建立的算盤圖片庫中隨機選取右邊框圖片和左邊框圖片;
[0015]將右邊框圖片和左邊框圖片分別拼接在表示整數(shù)0的算珠檔圖片的最右側和最左側,生成驗證碼圖片。
[0016]可選的,所述將算珠檔圖片按預設順序排列,為:將算珠檔圖片按對應的數(shù)位從大到小的順序從左到右排列,或者將算珠檔圖片按對應的數(shù)位從大到小的順序從右到左排列。
[0017]可選的,所述的驗證碼圖片生成方法,還包括:
[0018]當所述數(shù)字為小數(shù)時,在預先建立的算盤圖片庫中隨機選取小數(shù)點圖片;
[0019]根據(jù)所述數(shù)字中小數(shù)點的位置,在按預設順序排列的算珠檔圖片之間對應的位置插入小數(shù)點圖片;
[0020]將小數(shù)點圖片與相鄰兩側的算珠檔圖片拼接。
[0021]可選的,所述的圖片驗證碼生成方法,還包括:對驗證碼圖片進行加噪處理。
[0022]根據(jù)本申請實施例的第二方面,提供一種驗證碼圖片生成裝置,包括:
[0023]數(shù)字生成模塊,用于生成一個預設長度的數(shù)字;
[0024]數(shù)位分解模塊,用于獲取所述數(shù)字每個數(shù)位的數(shù)值;
[0025]算珠檔圖片選取模塊,用于根據(jù)每個數(shù)位的數(shù)值分別在預先建立的算盤圖片庫中選取對應的算珠檔圖片,所述算珠檔圖片中算珠所表示的數(shù)值與數(shù)位的數(shù)值對應;
[0026]排列模塊,用于將算珠檔圖片按預設順序排列;
[0027]合成模塊,用于拼接按預設順序排列的算珠檔圖片,生成驗證碼圖片。
[0028]可選的,所述的驗證碼圖片生成裝置,還包括:
[0029]零檔圖片選取模塊,用于在預先建立的算盤圖片庫中隨機選取預設個數(shù)表示整數(shù)0的算珠檔圖片。
[0030]可選的,所述的驗證碼圖片生成裝置,還包括:
[0031]邊框圖片選取模塊,用于在預先建立的算盤圖片庫中隨機選取右邊框圖片和左邊框圖片。
[0032]可選的,所述的驗證碼圖片生成裝置中,所述合成模塊,還包括:
[0033]零檔拼接子模塊,用于將表示整數(shù)0的算珠檔圖片分組拼接在按預設順序排列并拼接的算珠檔圖片的兩側;
[0034]邊框拼接子模塊,用于將右邊框圖片和左邊框圖片分別拼接在表示整數(shù)0的算珠檔圖片的最右側和最左側。
[0035]可選的,所述的驗證碼圖片生成裝置中,所述排列模塊用于將算珠檔圖片按對應的數(shù)位從大到小的順序從左到右排列,或者將算珠檔圖片按對應的數(shù)位從大到小的順序從右到左排列。
[0036]可選的,所述的驗證碼圖片生成裝置,還包括:
[0037]小數(shù)點圖片選取模塊,在預先建立的算盤圖片庫中隨機選取小數(shù)點圖片;
[0038]小數(shù)點圖片插入模塊,用于根據(jù)所述數(shù)字中小數(shù)點的位置,在按預設順序排列的算珠檔圖片之間對應的位置插入小數(shù)點圖片。
[0039]可選的,所述的驗證碼圖片生成裝置中,所述合成模塊,還包括:
[0040]小數(shù)點圖片拼接子模塊,用于將小數(shù)點圖片與相鄰兩側的算珠檔圖片拼接。
[0041]可選的,所述的驗證碼圖片生成裝置,還包括:
[0042]加噪模塊,用于對驗證碼圖片進行加噪處理。
[0043]根據(jù)本申請實施例的第三方面,提供一種驗證碼輸入方法,包括:
[0044]獲取用戶對交互式算盤圖形的操作信息和在交互式算盤圖形的操作坐標,所述操作信息包括點擊和拖動;
[0045]根據(jù)所述操作信息和操作坐標改變交互式算盤圖形中區(qū)域塊的值,所述區(qū)域塊與沿檔桿排列的算珠元件和空位對應,大小相同,算珠元件填充于所述區(qū)域塊中;
[0046]根據(jù)所有區(qū)域塊的值得到對應的待驗證數(shù)字。
[0047]可選的,所述的驗證碼輸入方法中,所述區(qū)域塊的值為0和1,當算珠元件填充于所述區(qū)域塊時,所述區(qū)域塊的值為1,否則,所述區(qū)域塊的值為0。
[0048]可選的,所述的驗證碼輸入方法,其特征在于,所述根據(jù)所述操作信息和操作坐標改變交互式算盤圖形中區(qū)域塊的值,包括:
[0049]判斷操作信息為點擊還是拖動;
[0050]當操作信息為點擊時:
[0051]判斷所述操作坐標是否在區(qū)域塊的坐標范圍內;
[0052]當所述操作坐標在區(qū)域塊的坐標范圍內時,判斷所述區(qū)域塊內是否填充有算珠元件;
[0053]當所述區(qū)域塊填充有算珠元件時,將所述算珠元件填充于相鄰的對應于空位的區(qū)域塊中,將所述區(qū)域塊的值和相鄰的對應于空位的區(qū)域塊的值取反,否則,保持所述區(qū)域塊的值和相鄰的對應于空位的區(qū)域塊的值;
[0054]當操作信息為拖動時:
[0055]判斷拖動的起始操作坐標和終止操作坐標是否分別在兩個相鄰區(qū)域塊的坐標范圍內;
[0056]當拖動的起始操作坐標和終止操作坐標分別在兩個相鄰區(qū)域塊的坐標范圍內時,判斷是否起始操作坐標所在的區(qū)域塊內填充有算珠元件,且終止操作坐標所在的區(qū)域塊內為空位;
[0057]當起始操作坐標所在的區(qū)域塊內填充有算珠元件,且終止操作坐標所在的區(qū)域塊內為空位時,將所述算珠元件填充于終止操作坐標所在的區(qū)域塊中,分別將起始操作坐標所在的區(qū)域塊的值和終止操作坐標所在的區(qū)域塊的值取反,否則,保持起始操作坐標所在的區(qū)域塊的值和終止操作坐標所在的區(qū)域塊的值。
[0058]可選的,所述的驗證碼輸入方法中,所述根據(jù)所有區(qū)域塊的值得到對應的待驗證數(shù)字,包括:
[0059]將每列中每個區(qū)域塊的標號和每個區(qū)域塊的值相乘后相加得到每列對應的多項式;
[0060]根據(jù)每列的多項式查找預先建立的映射表,得到每列對應的整數(shù),所述整數(shù)為0至9 ;
[0061]根據(jù)每列對應的整數(shù)和每列對應的檔桿排列的順序,得到待驗證的數(shù)字。
[0062]可選的,所述的驗證碼輸入方法,在獲取用戶對交互式算盤圖形的操作信息和在交互式算盤圖形的操作區(qū)域之前,還包括:當用戶點擊驗證碼輸入窗口或者驗證碼輸入圖標時,顯示交互式算盤圖形。
[0063]可選的,所述的驗證碼輸入方法,還包括:將得到的待驗證數(shù)字顯示于驗證碼輸入顯示窗口。
[0064]根據(jù)本申請實施例的第四方面,提供一種驗證碼輸入裝置,包括:
[0065]操作信息獲取模塊,用于獲取用戶對交互式算盤圖形的操作信息,所述操作信息包括點擊和拖動;
[0066]操作坐標獲取模塊,用于獲取用戶對交互式算盤圖形進行操作時在交互式算盤圖形的操作坐標;
[0067]區(qū)域塊變值模塊,用于根據(jù)所述操作信息和操作坐標改變交互式算盤圖形中區(qū)域塊的值,所述區(qū)域塊與沿檔桿排列的算珠元件和空位對應,大小相同,算珠元件填充于所述區(qū)域塊中;
[0068]待驗證數(shù)字獲取模塊,用于根據(jù)所有區(qū)域塊的值得到對應的待驗證數(shù)字。
[0069]其中,所述區(qū)域塊的值為0和1,當算珠元件填充于所述區(qū)域塊時,所述區(qū)域塊的值為1,否則,所述區(qū)域塊的值為0。
[0070]可選的,所述區(qū)域塊變值模塊,包括:
[0071]操作判斷子模塊,用于判斷操作信息為點擊還是拖動;
[0072]點擊操作范圍判斷子模塊,用于當操作信息為點擊時,判斷點擊操作的操作坐標是否在區(qū)域塊的坐標范圍內;
[0073]點擊操作填充判斷子模塊,用于當點擊操作的操作坐標在區(qū)域塊的坐標范圍內時,判斷所述區(qū)域塊內是否填充有算珠元件;
[0074]點擊操作變值子模塊,用于當點擊操作的操作坐標在區(qū)域塊的坐標范圍內,且當所述區(qū)域塊填充有算珠元件時,將所述算珠元件填充于相鄰的對應于空位的區(qū)域塊中,將所述區(qū)域塊的值和相鄰的對應于空位的區(qū)域塊的值取反,否則,保持所述區(qū)域塊的值和相鄰的對應于空位的區(qū)域塊的值;
[0075]拖動操作范圍判斷子模塊,用于判斷拖動的起始操作坐標和終止操作坐標是否分別在兩個相鄰區(qū)域塊的坐標范圍內;
[0076]拖動操作填充判斷子模塊,用于當拖動的起始操作坐標和終止操作坐標分別在兩個相鄰區(qū)域塊的坐標范圍內時,判斷是否起始操作坐標所在的區(qū)域塊內填充有算珠元件,且終止操作坐標所在