本申請涉及互聯(lián)網(wǎng)
技術(shù)領(lǐng)域:
,尤其涉及一種生成驗證碼圖片的方法及裝置、一種校驗驗證碼的方法及裝置。
背景技術(shù):
:互聯(lián)網(wǎng)已經(jīng)深入到人們生活的各個領(lǐng)域。網(wǎng)絡(luò)在為人們提供便利的同時,也帶來了各種風(fēng)險。一些惡意使用者利用機器人程序大量不當(dāng)使用網(wǎng)絡(luò)資源,如使用自動注冊工具批量注冊網(wǎng)站賬號并灌水、向服務(wù)器提交垃圾數(shù)據(jù)等等,浪費服務(wù)器資源,影響合法用戶的正常使用。還有一些惡意使用者不斷訪問服務(wù)器,嘗試破解合法用戶賬號的密碼,使合法用戶的隱私和利益面臨威脅。因此,服務(wù)器上通常部署能夠自動分辨合法與惡意使用者的技術(shù),來降低被惡意使用的風(fēng)險。驗證碼就是一種被廣泛采用的區(qū)分合法與惡意使用者的技術(shù)。通常由服務(wù)器向客戶端下發(fā)一張驗證碼圖片,客戶端將該驗證碼圖片顯示給用戶,用戶辨識該驗證碼圖片中驗證字符串并輸入客戶端,只有用戶正確輸入驗證字符串才能通過驗證。同時,各種圖像識別技術(shù)被用來識別驗證碼圖片中的驗證字符串,以實現(xiàn)對驗證碼的自動破解。為了提高驗證碼圖片的識別難度,現(xiàn)有技術(shù)中通常采用文字形變的方式來處理驗證字符串,文字變形程度越高圖像識別難度越大,但是對用戶而言,辨認(rèn)出驗證碼字符串的難度也隨之提高,用戶經(jīng)常需要重復(fù)進(jìn)行驗證或更換驗證碼圖片,造成了用戶的不便。技術(shù)實現(xiàn)要素:有鑒于此,本申請?zhí)峁┮环N生成驗證碼圖片的方法,包括:以一定粗細(xì)的線條繪制至少兩條交叉設(shè)置的曲線作為驗證碼圖片的背景;獲取驗證字符串;采用所述一定粗細(xì)的線條,在背景上以鏤空字體繪制驗證字符串。本申請還提供了一種生成驗證碼圖片的裝置,包括:背景生成單元,用于以一定粗細(xì)的線條繪制至少兩條交叉設(shè)置的曲線作為驗證碼圖片的背景;字符串獲取單元,用于獲取驗證字符串;字符串繪制單元,用于采用所述一定粗細(xì)的線條,在背景上以鏤空字體繪制驗證字符串。本申請?zhí)峁┑囊环N校驗驗證碼的方法,包括:接收服務(wù)器發(fā)送的驗證碼圖片;所述驗證碼圖片包括以至少兩條交叉設(shè)置的曲線形成的背景,和鏤空字體的驗證字符串;所述曲線和驗證字符串以相同粗細(xì)的線條繪制;向用戶顯示接收的驗證碼圖片;接收用戶根據(jù)驗證碼圖片輸入的識別字符串并發(fā)送給所述服務(wù)器。本申請還提供了一種校驗驗證碼的裝置,包括:驗證碼圖片接收單元,用于接收服務(wù)器發(fā)送的驗證碼圖片;所述驗證碼圖片包括以至少兩條交叉設(shè)置的曲線形成的背景,和鏤空字體的驗證字符串;所述曲線和驗證字符串以相同粗細(xì)的線條繪制;驗證碼圖片顯示單元,用于向用戶顯示接收的驗證碼圖片;識別字符串處理單元,用于接收用戶根據(jù)驗證碼圖片輸入的識別字符串并發(fā)送給所述服務(wù)器。由以上技術(shù)方案可見,本申請的實施例中,采用交叉設(shè)置的曲線作為驗證碼圖片的背景,在其上以相同粗細(xì)的線條繪制鏤空字體的驗證字符串,利 用曲線作為背景噪聲,提高了驗證碼圖片被圖像識別軟件自動識別的難度,同時易于被人眼辨認(rèn)。附圖說明圖1是本申請實施例中一種生成驗證碼圖片的方法的流程圖;圖2是不同參數(shù)的玫瑰線樣式示意圖;圖3是一個例子中一種由四葉玫瑰線交叉設(shè)置而成的驗證碼圖片背景;圖4是一個例子中一種由五葉玫瑰線交叉設(shè)置而成的驗證碼圖片背景;圖5是一個例子中一種由不同樣式的玫瑰線交叉設(shè)置而成的驗證碼圖片背景;圖6是一個例子中應(yīng)用本申請實施例的方法后生成的驗證碼圖片;圖7本申請實施例中一種校驗驗證碼的方法的流程圖;圖8是應(yīng)用本申請實施例的計算設(shè)備的一種硬件結(jié)構(gòu)圖;圖9是本申請實施例中的一種生成驗證碼圖片的裝置的邏輯結(jié)構(gòu)圖;圖10是本申請實施例中的一種校驗驗證碼的裝置的邏輯結(jié)構(gòu)圖。具體實施方式本申請的實施例提出一種新的生成驗證碼圖片的方法,采用曲線作為驗證碼圖片的背景,在其上添加鏤空形式的驗證字符串,使得驗證碼圖片在難以被自動識別的同時易于被人眼辨認(rèn),以解決現(xiàn)有技術(shù)存在的問題。本實施例的流程如圖1所示。步驟110,以一定粗細(xì)的線條繪制至少兩條交叉設(shè)置的曲線作為驗證碼圖片的背景。本實施例中可以采用各種數(shù)學(xué)曲線來作為背景,例如各種螺旋線、蝶形曲線、外擺線、圓內(nèi)旋輪線等等;可以采用參數(shù)相同或不同的同一種類曲線交叉設(shè)置后作為背景,也可以采用不同種類的曲線交叉設(shè)置后作為背景,本實施例中不做限定。需要說明的是,背景中每條曲線可以是根據(jù)某個數(shù)學(xué)表達(dá)式繪制的完整曲線,也可以是上述完整曲線的一部分。每條曲線都以一定粗細(xì)的線條繪制。曲線可以采用純色繪制,也可以采用多種顏色繪制,例如,每條曲線采用一種顏色;再如,采用隨機顏色來繪制曲線上的每個點。一個例子中,可以采用交叉設(shè)置的玫瑰線來作為驗證碼圖片的背景。玫瑰線是一種具有周期性且包絡(luò)線為圓弧的曲線,其極坐標(biāo)方程為式1或式2,其直角坐標(biāo)方程為式3。ρ=a*sin(kθ)式1ρ=a*cos(kθ)式2x=a*sin(kθ)*cos(θ)y=a*sin(kθ)*sin(θ)]]>式3玫瑰線的幾何結(jié)構(gòu)取決于上述三個公式中參數(shù)a和k的取值。其中,參數(shù)a(包絡(luò)半徑)決定了玫瑰線的大小,即葉子的長度;k決定了玫瑰線的樣式,即葉子的長寬比例和數(shù)目,設(shè)k=n/d,其中n、d為自然數(shù),當(dāng)n和d分別取從1到7的值時,玫瑰線的樣式如圖2所示。本實施例中,對用于生成背景圖像的各條玫瑰線的包絡(luò)半徑和樣式(即a和k的取值)沒有限制,但是橫向或縱向相鄰排列的兩條玫瑰線的極點(或原點)之間的距離小于這兩條玫瑰線的包絡(luò)半徑之和,以使得相鄰兩條玫瑰線能夠部分重疊。換言之,可以將葉子長度和樣式都相同的玫瑰線(即相同的a和k生成的玫瑰線)交叉設(shè)置,也可以將葉子長度不同和/或樣式不同的玫瑰線(即不同的a相同的k生成的玫瑰線,或相同的a不同的k生成玫瑰線,或不同的a不同的k生成的玫瑰線)交叉設(shè)置來作為驗證碼圖片的背景。可以采用以固定的橫向(x軸)間隔和/或固定的縱向(y軸)間隔交叉設(shè)置的相同玫瑰線作為背景,橫向間隔和縱向間隔都小于玫瑰線包絡(luò)半徑的兩倍。這樣的背景因圖案存在固定的模式較為美觀。例如,圖3所示為由相同大小的四葉玫瑰線(a相同,k=2)交叉設(shè)置形成的背景,相鄰玫瑰線的橫向間隔和縱向間隔均等于包絡(luò)半徑a。再如,圖4所示為由相同大小的五葉 玫瑰線(a相同,k=5)交叉設(shè)置形成的背景,相鄰玫瑰線的橫向間隔和縱向間隔均等于包絡(luò)半徑a。也可以采用以固定的橫向間隔和/或固定的縱向間隔交叉設(shè)置的相同包絡(luò)半徑的不同玫瑰線作為背景,橫向間隔和縱向間隔均小于包絡(luò)半徑的兩倍。這樣的背景美觀程度稍差一些,但是由于圖案不存在固定模式,更加難以被圖像識別軟件識別。圖5所示為相同大小、隨機樣式的玫瑰線(a相同,k隨機)交叉設(shè)置形成的背景,相鄰玫瑰線的橫向間隔和縱向間隔均等于包絡(luò)半徑a?;氐綀D1,步驟120,獲取驗證字符串。本實施例中對獲取驗證字符串的具體方式不做限定。例如,可以調(diào)用具有生成隨機字符串功能的軟件模塊來得到驗證字符串;可以在預(yù)先生成的驗證字符串集合中選擇其中的一個等等。本實施例中對驗證字符串的構(gòu)成也不做限定,驗證字符串中的字符可以是字、單詞、數(shù)字、字母、符號等等。需要說明的是,步驟110和120之間沒有時序關(guān)系。步驟130,采用該一定粗細(xì)的線條,在背景上以鏤空字體繪制驗證字符串。鏤空字體也稱為空心字體,鏤空字體的字符只用邊線表達(dá)出字符的外形,而內(nèi)部則是透明的。本實施例中采用與背景曲線同樣粗細(xì)的線條,在背景上按順序繪制出驗證字符串中每個字符的邊線。采用鏤空字體可以防止對驗證字符串進(jìn)行腐蝕處理后再識別,采用與曲線相同粗細(xì)的線條繪制鏤空字體則使背景的曲線成為難以去除的噪聲,從而大大提高了自動圖像識別的難度。如果曲線是純色的,驗證字符串可以采用相同的顏色繪制。為了避免針對某一種顏色進(jìn)行OCR(OpticalCharacterRecognition,光學(xué)字符識別)處理,可以采用不同的顏色在背景上以鏤空字體來繪制驗證字符串中的字符,例如,以兩種顏色來繪制驗證字符串,相鄰的字符采用不同的顏色,以便于人眼辨認(rèn);再如,每個字符采用一種顏色來繪制。如果采用隨機顏色來繪制曲線上的每個點,則可以在RGB(RedGreenBlue,紅綠藍(lán))通道0到127的值域范圍內(nèi)隨機選擇驗證字符串中字符的字體顏色,并采用所選擇的顏色,在背景上以鏤空字體繪制驗證字符串中的字符。RGB通道0到127的值域范圍內(nèi)的字體顏色較暗,與背景的反差比較大,更容易被人眼辨認(rèn)??梢詫㈦S機選擇的一種顏色應(yīng)用于所有字符,也可以為每個字符隨機選擇一種顏色。驗證字符串中的每個字符在背景上的縱向位置可以相同,也可以不同,采用變化的縱向位置來繪制字符能夠增加圖像識別的難度。可以采用多種方式來確定變化的縱向位置,例如,在預(yù)定的取值范圍內(nèi)隨機選擇一個值作為一個字符的縱向頂點;再如,隨機選擇一條預(yù)設(shè)曲線,在該曲線上確定對應(yīng)個數(shù)的點作為各個字符的頂點;本實施例中不做限定。針對以鏤空字體的字符為樣本進(jìn)行訓(xùn)練、來識別鏤空字符的圖像識別技術(shù),在背景上繪制鏤空字體的驗證字符串時,可以令相鄰兩個字符的橫向間隔小于字符的寬度,將相鄰的兩個字符部分重疊,使得相鄰的字符互為噪聲,增加識別的難度。重疊的程度可以以不會過度影響人眼辨識為準(zhǔn)。上述各種繪制驗證字符串的具體方式,如不同的顏色、不同的縱向位置、相鄰字符部分重疊等,根據(jù)實際應(yīng)用場景的需求,可以單獨使用,也可以同時使用。本實施例的方法可以應(yīng)用在任何計算設(shè)備上,如服務(wù)器、虛擬機、個人電腦、平板電腦、手機等設(shè)備。在客戶端/服務(wù)器(C/S)模式的應(yīng)用中,本實施例的方法通常應(yīng)用在服務(wù)器上??梢?,本申請的實施例以交叉的曲線為背景,在背景上以相同粗細(xì)的線條繪制鏤空字體的驗證字符串,使得曲線作為圖像識別中難以去除背景噪聲,生成的驗證碼圖片很難被圖像識別軟件自動識別,同時易于被人眼辨認(rèn)。在本申請的一個應(yīng)用示例中,服務(wù)器在收到客戶端的登錄請求后,隨機生成包絡(luò)半徑a相同的不同樣式的玫瑰線,以等于包絡(luò)半徑a的橫向間隔和縱向間隔交叉設(shè)置,以隨機顏色逐點繪制每條玫瑰線,得到驗證碼圖片的背 景;隨機生成驗證字符串;在預(yù)設(shè)的值域范圍內(nèi)隨機選擇驗證字符串中每個字符串的縱向頂點位置,在RGB通道0到127的值域范圍內(nèi)隨機選擇每個字符的字體顏色;以相鄰字符橫向重疊四分之一字符寬度的格式,在選擇的縱向頂點位置、用選擇的字體顏色,將對應(yīng)的字符繪制為鏤空字體,生成驗證碼圖片并發(fā)送客戶端。假設(shè)驗證字符串為“ABCDEF”,生成的驗證碼圖片可以如圖6所示,其中的每條玫瑰線都是完整曲線的一部分。本申請的另一個實施例中提供了一種校驗驗證碼的方法,可以應(yīng)用在任何計算設(shè)備上,如虛擬機、個人電腦、平板電腦、手機等設(shè)備,在客戶端/服務(wù)器(C/S)模式的應(yīng)用中,該方法通常應(yīng)用在客戶端。本實施例中,由服務(wù)器向應(yīng)用本實施例方法的計算設(shè)備進(jìn)行驗證碼校驗。本實施例方法的流程如圖7所示。步驟710,接收服務(wù)器發(fā)送的驗證碼圖片。服務(wù)器發(fā)送的驗證碼圖片包括以至少兩條交叉設(shè)置的曲線形成的背景,和鏤空字體的驗證字符串;并且,驗證碼圖片中的曲線和鏤空字體的驗證字符串以相同粗細(xì)的線條繪制。具體而言,作為背景的曲線的種類(如玫瑰線)及參數(shù)、交叉設(shè)置的方式、曲線的顏色,以及驗證字符串的構(gòu)成、顏色、縱向位置、是否部分重疊等請參見前述實施例的描述,不再重復(fù)。步驟720,向用戶顯示接收的驗證碼圖片。在收到服務(wù)器的驗證碼圖片后,計算設(shè)備將驗證碼圖片呈現(xiàn)給用戶,供用戶識別驗證碼圖片中的驗證字符串。步驟730,接收用戶根據(jù)驗證碼圖片輸入的識別字符串并發(fā)送給該服務(wù)器。用戶將對驗證碼圖片中驗證字符串的識別結(jié)果作為識別字符串輸入到計算設(shè)備中,計算設(shè)備將識別字符串發(fā)送給下發(fā)驗證碼圖片的服務(wù)器;由服務(wù)器比對識別字符串和驗證字符串是否相同,以決定用戶是否通過驗證。與上述流程實現(xiàn)對應(yīng),本申請的實施例還提供了一種生成驗證碼圖片的 裝置和一種校驗驗證碼的裝置。這兩種裝置均可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為邏輯意義上的裝置,是通過所在計算設(shè)備的CPU(CentralProcessUnit,中央處理器)將對應(yīng)的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,除了圖8所示的CPU、內(nèi)存以及非易失性存儲器之外,生成驗證碼圖片的裝置、或校驗驗證碼的裝置所在的設(shè)備通常還包括用于實現(xiàn)網(wǎng)絡(luò)通信功能的板卡等其他硬件。圖9所示為本申請實施例提供的一種生成驗證碼圖片的裝置,從功能上劃分,包括背景生成單元、字符串獲取單元和字符串繪制單元,其中:背景生成單元用于以一定粗細(xì)的線條繪制至少兩條交叉設(shè)置的曲線作為驗證碼圖片的背景;字符串獲取單元用于獲取驗證字符串;字符串繪制單元用于采用所述一定粗細(xì)的線條,在背景上以鏤空字體繪制驗證字符串。可選的,所述曲線為玫瑰線??蛇x的,所述交叉設(shè)置的曲線包括:以固定的橫向間隔和/或固定的縱向間隔排列的相同玫瑰線;或者,以固定的橫向間隔和/或固定的縱向間隔排列的相同包絡(luò)半徑的不同玫瑰線;所述橫向間隔和縱向間隔均小于所述玫瑰線包絡(luò)半徑的兩倍。可選的,所述曲線上的每個點采用隨機顏色繪制??蛇x的,所述字符串繪制單元具體用于:采用所述一定粗細(xì)的線條,以不同的縱向位置和/或不同的顏色,在背景上以鏤空字體繪制驗證字符串中的字符??蛇x的,所述字符串繪制單元包括字體顏色選擇模塊和字符繪制模塊,其中:字體顏色選擇模塊用于在RGB通道0到127的值域范圍內(nèi)隨機選擇驗證字符串中每個字符的字體顏色;字符繪制模塊用于采用所述一定粗細(xì)的線條和所選擇的顏色,在背景上以鏤空字體繪制對應(yīng)的字符??蛇x的,所述字符串繪制單元具體用于:采用所述一定粗細(xì)的線條,將驗證字符串中的每個字符以鏤空字體繪制在背景上,相鄰的兩個字符部分重 疊。圖10所示為本申請實施例提供的一種校驗驗證碼的裝置,從功能上劃分,包括驗證碼圖片接收單元、驗證碼圖片顯示單元和識別字符串處理單元,其中:驗證碼圖片接收單元用于接收服務(wù)器發(fā)送的驗證碼圖片;所述驗證碼圖片包括以至少兩條交叉設(shè)置的曲線形成的背景,和鏤空字體的驗證字符串;所述曲線和驗證字符串以相同粗細(xì)的線條繪制;驗證碼圖片顯示單元用于向用戶顯示接收的驗證碼圖片;識別字符串處理單元用于接收用戶根據(jù)驗證碼圖片輸入的識別字符串并發(fā)送給所述服務(wù)器。可選的,所述曲線為玫瑰線。以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請保護(hù)的范圍之內(nèi)。在一個典型的配置中,計算設(shè)備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flashRAM)。內(nèi)存是計算機可讀介質(zhì)的示例。計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。當(dāng)前第1頁1 2 3