動(dòng)態(tài)驗(yàn)證碼圖片生成方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種動(dòng)態(tài)驗(yàn)證碼圖片生成方法及裝置。
【背景技術(shù)】
[0002]驗(yàn)證碼是一種區(qū)分用戶是計(jì)算機(jī)還是人的公共全自動(dòng)程序,可以有效防止黑客對(duì)某個(gè)特定注冊(cè)用戶使用特定程序暴力破解方式進(jìn)行不斷的登陸嘗試,從而防止網(wǎng)絡(luò)刷票、論壇灌水等行為。使用驗(yàn)證碼是現(xiàn)在很多網(wǎng)站通行的方式,最廣泛的使用方式是生成驗(yàn)證碼圖片,將由一些隨機(jī)字符組成的驗(yàn)證碼以圖片形式顯示,用戶將驗(yàn)證碼圖片中包括的驗(yàn)證碼輸入系統(tǒng),如果輸入的驗(yàn)證碼通過(guò)系統(tǒng)的驗(yàn)證,則認(rèn)為用戶當(dāng)前的請(qǐng)求是有效的,否則當(dāng)前的請(qǐng)求無(wú)效。
[0003]為了阻止計(jì)算機(jī)破解程序利用OCR (Optical Character Recognit1n,光學(xué)字符識(shí)別)等技術(shù)識(shí)別驗(yàn)證碼圖片上的字符以獲得驗(yàn)證碼,通常在生成驗(yàn)證碼圖片時(shí)會(huì)做以下處理:(1)添加干擾元素,例如干擾點(diǎn)、干擾線或者圖片背景;(2)使字符相互連接甚至部分重疊;(3)扭曲圖片上的字符。經(jīng)過(guò)上述處理后的驗(yàn)證碼圖片,人眼可以分辨出字符,但計(jì)算機(jī)破解程序識(shí)別的難度增加。
[0004]但是,使用上述處理方式的驗(yàn)證碼圖片生成方法,使用方式(I)時(shí)如果干擾元素太多,雖然增加了計(jì)算機(jī)破解程序的識(shí)別難度,但同樣提高了用戶識(shí)別的難度,如果干擾元素不夠,計(jì)算機(jī)破解程序只需要進(jìn)行去噪處理就可以識(shí)別出字符,安全性低;使用方式(2)或方式(3)時(shí),如果字符連接或重疊過(guò)多,或者過(guò)于扭曲,計(jì)算機(jī)破解程序雖然難以識(shí)別,但由于邊緣干擾度大或者字符變形嚴(yán)重,也會(huì)導(dǎo)致用戶很難識(shí)別,往往需要分辨重試多次才能輸入正確的驗(yàn)證碼。因此,現(xiàn)有的驗(yàn)證碼圖片生成方法,難以兼顧安全性和用戶易識(shí)別的要求。
【發(fā)明內(nèi)容】
[0005]為克服相關(guān)技術(shù)中驗(yàn)證碼圖片難以兼顧安全性和用戶易識(shí)別要求的問(wèn)題,本申請(qǐng)?zhí)峁┮环N動(dòng)態(tài)驗(yàn)證碼圖片生成方法及裝置。
[0006]根據(jù)本申請(qǐng)實(shí)施例的第一方面,提供一種動(dòng)態(tài)驗(yàn)證碼圖片生成方法,包括:
[0007]使用隨機(jī)字符生成驗(yàn)證碼;
[0008]根據(jù)所述驗(yàn)證碼生成基礎(chǔ)靜態(tài)圖層;
[0009]使用隨機(jī)字符生成多個(gè)干擾圖層,將所述多個(gè)干擾圖層分別與所述基礎(chǔ)靜態(tài)圖層合并為多個(gè)復(fù)合幀;
[0010]為得到的多個(gè)復(fù)合幀預(yù)設(shè)幀速以生成動(dòng)態(tài)驗(yàn)證碼圖片。
[0011]優(yōu)選的,所述預(yù)設(shè)幀速為0.05?0.2s。
[0012]優(yōu)選的,所述預(yù)設(shè)幀速為Is。
[0013]優(yōu)選的,所述干擾圖層中隨機(jī)字符隨機(jī)分布。
[0014]優(yōu)選的,所述基礎(chǔ)靜態(tài)圖層中字符與背景使用對(duì)比色,所述驗(yàn)證碼的各個(gè)字符相互分離。
[0015]優(yōu)選的,所述干擾圖層的背景顏色與所述基礎(chǔ)靜態(tài)圖層的背景顏色相同,所述干擾圖層中的字符與所述基礎(chǔ)靜態(tài)圖層中的字符顏色、字體和大小相同。
[0016]相應(yīng)于本申請(qǐng)實(shí)施例的第一方面,根據(jù)本申請(qǐng)實(shí)施例的第二方面,提供一種動(dòng)態(tài)驗(yàn)證碼圖片生成裝置,包括:
[0017]驗(yàn)證碼生成模塊,用于使用隨機(jī)字符生成驗(yàn)證碼;
[0018]基礎(chǔ)靜態(tài)圖層生成模塊,用于根據(jù)所述驗(yàn)證碼生成基礎(chǔ)靜態(tài)圖層;
[0019]復(fù)合幀生成模塊,用于使用隨機(jī)字符生成多個(gè)干擾圖層,將所述多個(gè)干擾圖層分別與所述基礎(chǔ)靜態(tài)圖層合并為多個(gè)復(fù)合幀;
[0020]動(dòng)態(tài)驗(yàn)證碼圖片生成模塊,用于為得到的多個(gè)復(fù)合幀預(yù)設(shè)幀速以生成動(dòng)態(tài)驗(yàn)證碼圖片。
[0021]優(yōu)選的,所述復(fù)合幀生成模塊,包括:
[0022]干擾圖層生成子模塊,用于使用隨機(jī)字符生成多個(gè)干擾圖層;
[0023]幀合成子模塊,用于將所述多個(gè)干擾圖層分別與所述基礎(chǔ)靜態(tài)圖層合并為多個(gè)復(fù)合幀。
[0024]優(yōu)選的,所述預(yù)設(shè)幀速為0.05?0.2s。
[0025]優(yōu)選的,所述預(yù)設(shè)幀速為Is。
[0026]優(yōu)選的,所述干擾圖層中隨機(jī)字符隨機(jī)分布。
[0027]本申請(qǐng)實(shí)施例提供的技術(shù)方案可以包括以下有益效果:將驗(yàn)證碼包含在基礎(chǔ)靜態(tài)圖層中,并生成多個(gè)干擾圖層,干擾圖層中包含隨機(jī)字符,將每個(gè)干擾圖層與基礎(chǔ)靜態(tài)圖層合并成復(fù)合幀,得到多個(gè)復(fù)合幀,再為多個(gè)復(fù)合幀預(yù)設(shè)幀速以生成動(dòng)態(tài)驗(yàn)證碼圖片,且所述預(yù)設(shè)幀速滿足視覺(jué)暫留的要求。因此動(dòng)態(tài)驗(yàn)證碼圖片在動(dòng)態(tài)變化時(shí),在視覺(jué)上,雖然干擾圖層中的字符呈現(xiàn)不斷變化的狀態(tài),但驗(yàn)證碼由于視覺(jué)暫留而保持靜止不變且清楚可見(jiàn),而且?guī)щS機(jī)字符的多個(gè)干擾圖層能夠有效防止計(jì)算機(jī)破解程序識(shí)別驗(yàn)證碼且不妨礙人眼對(duì)驗(yàn)證碼的識(shí)別,由此本申請(qǐng)實(shí)施例提供的技術(shù)方案不僅能提高驗(yàn)證碼的安全性,而且得到的驗(yàn)證碼人眼易識(shí)別,提高用戶體驗(yàn)。
[0028]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本申請(qǐng)。
【附圖說(shuō)明】
[0029]為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,對(duì)于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0030]圖1為本申請(qǐng)一示例性實(shí)施例示出的一種動(dòng)態(tài)驗(yàn)證碼圖片生成方法的流程示意圖。
[0031]圖2為基礎(chǔ)靜態(tài)圖層示例圖。
[0032]圖3為復(fù)合幀的示例圖。
[0033]圖4為本申請(qǐng)一示例性實(shí)施例示出的一種動(dòng)態(tài)驗(yàn)證碼圖片生成裝置的框圖。
【具體實(shí)施方式】
[0034]這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本申請(qǐng)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本申請(qǐng)的一些方面相一致的裝置和方法的例子。
[0035]為了全面理解本申請(qǐng),在以下詳細(xì)描述中提到了眾多具體的細(xì)節(jié),但是本領(lǐng)域技術(shù)人員應(yīng)該理解,本申請(qǐng)可以無(wú)需這些具體細(xì)節(jié)而實(shí)現(xiàn)。在其他實(shí)施例中,不詳細(xì)描述公知的方法、過(guò)程、組件和電路,以免不必要地導(dǎo)致實(shí)施例模糊。
[0036]根據(jù)本申請(qǐng)實(shí)施例的第一方面,提供一種動(dòng)態(tài)驗(yàn)證碼圖片生成方法。圖1為本申請(qǐng)一示例性實(shí)施例示出的一種動(dòng)態(tài)驗(yàn)證碼圖片生成方法的流程示意圖,如圖1所示,所述方法包括:
[0037]步驟S101,使用隨機(jī)字符生成驗(yàn)證碼。
[0038]其中,所述隨機(jī)字符為隨機(jī)生成的數(shù)字、字母或中文漢字等,也可以為數(shù)字、字母或中文漢字的任意組合。由于在終端上輸入數(shù)字相對(duì)較為方便,從方便用戶輸入驗(yàn)證碼的角度而言,優(yōu)選使用隨機(jī)數(shù)字生成驗(yàn)證碼。
[0039]步驟S102,根據(jù)所述驗(yàn)證碼生成基礎(chǔ)靜態(tài)圖層。
[0040]其中,設(shè)置一個(gè)靜態(tài)圖層,在靜態(tài)圖層中加入所述驗(yàn)證碼,將加入驗(yàn)證碼的靜態(tài)圖層作為基礎(chǔ)靜態(tài)圖層。基礎(chǔ)靜態(tài)圖層可以在驗(yàn)證碼可辨認(rèn)的前提下,設(shè)置不同的背景顏色或者花紋等,同樣在驗(yàn)證碼可辨認(rèn)的前提下,驗(yàn)證碼在基礎(chǔ)靜態(tài)圖層的位置可以任意分布以及設(shè)置與背景顏色不同的顏色。為了增加驗(yàn)證碼的人眼辨識(shí)度,優(yōu)選的是所述基礎(chǔ)靜態(tài)圖層中字符與背景使用對(duì)比色,所述驗(yàn)證碼的各個(gè)字符相互分離。圖2為基礎(chǔ)靜態(tài)圖層示例圖,以隨機(jī)生成的數(shù)字“4859”為驗(yàn)證碼,數(shù)字為黑色,背景顏色為白色。
[0041]步驟S103,使用隨機(jī)字符生成多個(gè)干擾圖層,將所述多個(gè)干擾圖層分別與所述基礎(chǔ)靜態(tài)圖層合并為多個(gè)復(fù)合幀。
[0042]其中,設(shè)置多個(gè)圖層,并新生成多個(gè)隨機(jī)字符,將隨機(jī)字符加入該多個(gè)圖層中,作為干擾圖層。所述隨機(jī)字符為隨機(jī)生成的數(shù)字、字母或中文漢字等,也可以為數(shù)字、字母或中文漢字的任意組合。每個(gè)圖層中隨機(jī)字符的個(gè)數(shù)可以與驗(yàn)證碼所包含的字符個(gè)數(shù)相同,也可以不同。將每個(gè)干擾圖層與基礎(chǔ)靜態(tài)圖層合并為一個(gè)復(fù)合幀,所述合并使用常規(guī)的圖層合并方法。
[0043]由于所述隨機(jī)字符是隨機(jī)生成的,因此即使每個(gè)干擾圖層中隨機(jī)字符的個(gè)數(shù)與驗(yàn)證碼所包含的字符個(gè)數(shù)相同,干擾圖層中的隨機(jī)字符與驗(yàn)證碼重復(fù)的概率也極小,因而對(duì)于每個(gè)復(fù)合幀而言,不僅增加了計(jì)算機(jī)破解程序區(qū)分干擾圖層中的隨機(jī)字符和驗(yàn)證碼的難度,也增加了驗(yàn)證碼的人眼辨識(shí)度。
[0044]干擾圖層的個(gè)數(shù)可以根據(jù)需要來(lái)設(shè)定,層數(shù)越多對(duì)計(jì)算機(jī)破解程序的干擾越大,但過(guò)多的層數(shù)也影響人眼對(duì)驗(yàn)證碼的辨識(shí)。
[0045]如果合并后每個(gè)干擾圖層中隨機(jī)字符在復(fù)合幀中的位置與驗(yàn)證碼在復(fù)合幀中的位置相同,將妨礙人眼對(duì)驗(yàn)證碼的辨識(shí),因此較優(yōu)選的是每個(gè)干擾圖層中隨機(jī)字符的位置都不相同,每個(gè)圖層中隨機(jī)字符可以按規(guī)律分布,例如按順時(shí)針的次序,設(shè)干擾圖層有4個(gè),第一個(gè)干擾圖層中隨機(jī)字符都位于干擾圖層的左上角,第二個(gè)干擾圖層隨機(jī)字符都位于干擾圖層的右上角,以此類(lèi)推。優(yōu)選的是,每個(gè)干擾圖層中隨機(jī)字符隨機(jī)分布,不僅更易實(shí)現(xiàn),有利于人眼對(duì)驗(yàn)證碼的辨識(shí),而且由于隨機(jī)字符分布無(wú)規(guī)律,進(jìn)一步增加了計(jì)算機(jī)破解程序破解的難度。
[0046]由于干擾圖層與基礎(chǔ)靜態(tài)圖層合并為復(fù)合幀。如果干擾圖層的背景顏色和基礎(chǔ)靜態(tài)圖層的背景顏色不同,所得到的復(fù)合幀的背景顏色可能會(huì)發(fā)生變化且導(dǎo)致覆蓋驗(yàn)證碼或者干擾圖層中隨機(jī)字符的顏色,使驗(yàn)證碼不可辨識(shí)或者干擾圖層中的隨機(jī)字符不可見(jiàn),但在驗(yàn)證碼可辨識(shí)和隨機(jī)字符可顯示的前提下,干擾圖層的背景顏色和基礎(chǔ)靜態(tài)圖層的背景顏色可以不同。在一種優(yōu)選的實(shí)施方式中,干擾圖層的背景顏色與基礎(chǔ)靜態(tài)圖層的背景顏色相同,避免復(fù)合幀的背景顏色對(duì)驗(yàn)證碼的覆蓋。在另一種優(yōu)選的實(shí)施方式中,干擾圖層的背景顏色與基礎(chǔ)靜態(tài)圖層的背景顏色相同,且干擾圖層中的隨機(jī)字符與所述驗(yàn)證碼的顏色、字體和大小相同,這樣不僅使驗(yàn)證碼的辨識(shí)度高,干擾圖層中與驗(yàn)證碼顏色、字體和大小相同的字符也更容易對(duì)計(jì)算機(jī)破解程序形成誤導(dǎo),增加計(jì)算機(jī)破解程序的破解難度。圖3為復(fù)合幀的示例圖,圖中“4859”為驗(yàn)證碼,其余數(shù)字為干擾圖層中的隨機(jī)字符,驗(yàn)證碼和隨機(jī)字符都是黑色宋體四號(hào)字,基礎(chǔ)靜態(tài)圖層和干擾圖層的背景顏色都是白色。
[0047]步驟S104,為得