本發(fā)明涉及驗證碼安全技術(shù)領(lǐng)域,更具體地涉及一種用于生成驗證碼的方法及裝置。
背景技術(shù):
驗證碼作為一種直觀、便捷的區(qū)分機器與真實用戶的技術(shù)手段,已在互聯(lián)網(wǎng)領(lǐng)域獲得廣泛應用。例如,在注冊、登陸以及在線交易等場合,都可能會涉及到驗證碼。
驗證碼一般多為圖片的形式,其中一般包含數(shù)字、英文字母和漢字字符。隨著字符識別(OCR)技術(shù)的不斷發(fā)展,機器識別圖片中文字的能力越來越強大。因此,圖片驗證碼被機器破解的可能性越來越高,其安全性不斷降低。
為提高圖片驗證碼的安全性,一些技術(shù)增強手段被提出,如對圖片進行扭曲操作,或添加噪聲點、線條等,以期干擾機器的自動文字識別程序;此外,也有提出基于圖片內(nèi)容的驗證碼,避免通過文字識別的方式判斷機器和真實用戶,但是這種驗證碼識別難度非常大,在阻斷機器的同時也大大增加真實用戶識別驗證碼的時間,因此用戶體驗并不令人滿意,從而無法得到大規(guī)模推廣和應用。
總之,圖片驗證碼已在互聯(lián)網(wǎng)的各個領(lǐng)域獲得了廣泛應用,但是其安全性正在不斷降低,需要新的技術(shù)手段來解決這一重要問題。
技術(shù)實現(xiàn)要素:
考慮到上述問題而提出了本發(fā)明。本發(fā)明提供了一種用于生成驗證碼的方法及裝置,其在生成驗證碼的過程中,利用至少一個不同的識別程序?qū)λ傻暮蜻x驗證碼進行識別,丟棄容易識別的候選驗證碼,輸出難以識別的驗證碼,從而提高驗證碼的安全性。
根據(jù)本發(fā)明一方面,提供了一種用于生成驗證碼的方法,所述方法包括:生成候選驗證碼;調(diào)用至少一個驗證碼識別程序?qū)λ龊蜻x驗證碼進行識別;確定所述候選驗證碼被正確識別的概率;以及當所述概率小于預定閾值時,輸出所述候選驗證碼作為最終生成的驗證碼,否則返回所述生成候選驗證碼的步驟。
在本發(fā)明的一個實施例中,所述確定所述候選驗證碼被正確識別的概率的步驟進一步包括:記錄所述候選驗證碼被所述至少一個驗證碼識別程序正確識別的次數(shù);以及基于所述正確識別的次數(shù)和所述驗證碼識別程序的數(shù)目計算所述候選驗證碼被正確識別的概率。
在本發(fā)明的一個實施例中,所述候選驗證碼基于給定字符串而生成,并且所述正確識別是指對所述候選驗證碼的識別結(jié)果與所述給定字符串完全相同。
示例性地,所述給定字符串包括數(shù)字、英文字母與漢字字符的任意組合。
在本發(fā)明的一個實施例中,所述至少一個驗證碼識別程序分別對應于不同類型和/或不同特性的文字識別算法。
示例性地,所述至少一個驗證碼識別程序至少包括以下中的兩個或兩個以上:對噪聲點不敏感的算法、對模糊不敏感的算法、對圖像扭曲不敏感的算法、對文字字體變化不敏感的算法。
在本發(fā)明的一個實施例中,所述生成候選驗證碼包括生成圖片驗證碼、語音驗證碼或視頻驗證碼。
示例性地,所述至少一個驗證碼識別程序中的每一個基于大量驗證碼圖片、語音或視頻訓練而成。
在本發(fā)明的一個實施例中,所述預定閾值基于所述最終生成的驗證碼所應用的場合而設(shè)置。
根據(jù)本發(fā)明另一方面,提供了一種用于生成驗證碼的裝置,所述裝置包括:候選驗證碼生成模塊,用于生成候選驗證碼;候選驗證碼識別模塊,用于調(diào)用至少一個驗證碼識別程序?qū)λ龊蜻x驗證碼進行識別;識別正確率確定模塊,用于確定所述候選驗證碼被正確識別的概率;以及最終驗證碼輸出模塊,用于在所述概率小于預定閾值時輸出所述候選驗證碼作為最終生成的驗證碼,并在所述概率大于或等于所述預定閾值時提示所述候選驗證碼生成模塊重新生成候選驗證碼。
在本發(fā)明的一個實施例中,所述識別正確率確定模塊所進行的確定所述候選驗證碼被正確識別的概率的步驟進一步包括:記錄所述候選驗證碼被所述至少一個驗證碼識別程序正確識別的次數(shù);以及基于所述正確識別的次數(shù)和所述驗證碼識別程序的數(shù)目計算所述候選驗證碼被正確識別的概率。
在本發(fā)明的一個實施例中,所述候選驗證碼生成模塊基于給定字符串生成候選驗證碼,并且所述識別正確率確定模塊在所述候選驗證碼的識別結(jié)果與所述給定字符串完全相同時確定所述候選驗證碼被正確識別。
示例性地,所述給定字符串包括數(shù)字、英文字母與漢字字符的任意組合。
在本發(fā)明的一個實施例中,所述至少一個驗證碼識別程序分別對應于不同類型和/或不同特性的文字識別算法。
示例性地,所述至少一個驗證碼識別程序至少包括以下中的兩個或兩個以上:對噪聲點不敏感的算法、對模糊不敏感的算法、對圖像扭曲不敏感的算法、對文字字體變化不敏感的算法。
在本發(fā)明的一個實施例中,所述候選驗證碼生成模塊用于生成圖片驗證碼、語音驗證碼或視頻驗證碼。
示例性地,所述至少一個驗證碼識別程序中的每一個基于大量驗證碼圖片、語音或視頻訓練而成。
在本發(fā)明的一個實施例中,所述預定閾值基于所述最終生成的驗證碼所應用的場合而設(shè)置。
根據(jù)本發(fā)明實施例的用于生成驗證碼的方法及裝置在將最終生成的驗證碼發(fā)送出去之前,先調(diào)用內(nèi)部識別程序?qū)蜻x驗證碼的難易程度進行判斷,只發(fā)送安全性合格的驗證碼,從而可以大幅降低驗證碼被外部自動識別程序破解的風險,提高驗證碼的安全性。
附圖說明
通過結(jié)合附圖對本發(fā)明實施例進行更詳細的描述,本發(fā)明的上述以及其它目的、特征和優(yōu)勢將變得更加明顯。附圖用來提供對本發(fā)明實施例的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中,相同的參考標號通常代表相同部件或步驟。
圖1是用于實現(xiàn)根據(jù)本發(fā)明實施例的用于生成驗證碼的方法和裝置的示例電子設(shè)備的示意性框圖;
圖2是根據(jù)本發(fā)明實施例的用于生成驗證碼的方法的示意性流程圖;
圖3是根據(jù)本發(fā)明實施例的用于生成驗證碼的裝置的示意性框圖;以及
圖4是根據(jù)本發(fā)明實施例的用于生成驗證碼的系統(tǒng)的示意性框圖。
具體實施方式
為了使得本發(fā)明的目的、技術(shù)方案和優(yōu)點更為明顯,下面將參照附圖詳細描述根據(jù)本發(fā)明的示例實施例。顯然,所描述的實施例僅僅是本發(fā)明的一部分實施例,而不是本發(fā)明的全部實施例,應理解,本發(fā)明不受這里描述的示例實施例的限制?;诒景l(fā)明中描述的本發(fā)明實施例,本領(lǐng)域技術(shù)人員在沒有付出創(chuàng)造性勞動的情況下所得到的所有其它實施例都應落入本發(fā)明的保護范圍之內(nèi)。
首先,參照圖1來描述用于實現(xiàn)本發(fā)明實施例的用于生成驗證碼的方法和裝置的示例電子設(shè)備100。
如圖1所示,電子設(shè)備100包括一個或多個處理器102、一個或多個存儲裝置104、輸入裝置106、輸出裝置108以及圖像傳感器110,這些組件通過總線系統(tǒng)112和/或其它形式的連接機構(gòu)(未示出)互連。應當注意,圖1所示的電子設(shè)備100的組件和結(jié)構(gòu)只是示例性的,而非限制性的,根據(jù)需要,所述電子設(shè)備也可以具有其他組件和結(jié)構(gòu)。
所述處理器102可以是中央處理單元(CPU)或者具有數(shù)據(jù)處理能力和/或指令執(zhí)行能力的其它形式的處理單元,并且可以控制所述電子設(shè)備100中的其它組件以執(zhí)行期望的功能。
所述存儲裝置104可以包括一個或多個計算機程序產(chǎn)品,所述計算機程序產(chǎn)品可以包括各種形式的計算機可讀存儲介質(zhì),例如易失性存儲器和/或非易失性存儲器。所述易失性存儲器例如可以包括隨機存取存儲器(RAM)和/或高速緩沖存儲器(cache)等。所述非易失性存儲器例如可以包括只讀存儲器(ROM)、硬盤、閃存等。在所述計算機可讀存儲介質(zhì)上可以存儲一個或多個計算機程序指令,處理器102可以運行所述程序指令,以實現(xiàn)下文所述的本發(fā)明實施例中(由處理器實現(xiàn))的客戶端功能以及/或者其它期望的功能。在所述計算機可讀存儲介質(zhì)中還可以存儲各種應用程序和各種數(shù)據(jù),例如所述應用程序使用和/或產(chǎn)生的各種數(shù)據(jù)等。
所述輸入裝置106可以是用戶用來輸入指令的裝置,并且可以包括鍵盤、鼠標、麥克風和觸摸屏等中的一個或多個。
所述輸出裝置108可以向外部(例如用戶)輸出各種信息(例如圖像或聲音),并且可以包括顯示器、揚聲器等中的一個或多個。
所述圖像傳感器110可以拍攝用戶期望的圖像(例如照片、視頻等),并且將所拍攝的圖像存儲在所述存儲裝置104中以供其它組件使用。
示例性地,用于實現(xiàn)根據(jù)本發(fā)明實施例的用于生成驗證碼的方法和裝置的示例電子設(shè)備可以被實現(xiàn)為諸如智能手機、平板電腦等。
下面,將參考圖2描述根據(jù)本發(fā)明實施例的用于生成驗證碼的方法200。
在步驟S210,生成候選驗證碼。
在一個實施例中,可以生成圖片驗證碼、語音驗證碼或視頻驗證碼等。例如,可以基于給定字符串生成包含該字符串的圖片驗證碼、語音驗證碼或視頻驗證碼等。其中,給定字符串可以包括數(shù)字、英文字母與漢字字符的任意組合。在另一個示例中,可以生成基于圖片內(nèi)容而非字符內(nèi)容的驗證碼。
在步驟S220,調(diào)用至少一個驗證碼識別程序?qū)λ傻暮蜻x驗證碼進行識別。
在一個實施例中,可以調(diào)用預先訓練好的一個驗證碼識別程序或多個不同的驗證碼識別程序?qū)λ傻暮蜻x驗證碼進行識別。
可基于所生成的候選驗證碼的類型進行驗證碼識別程序的不同訓練。例如,如果候選驗證碼為圖片驗證碼,則可基于大量的驗證碼圖片訓練一個或多個不同的驗證碼識別程序。類似地,如果候選驗證碼為語音驗證碼、視頻驗證碼或其他種類的驗證碼,則可相應地基于大量的驗證碼語音、視頻等來訓練一個或多個不同的驗證碼識別程序。
下面以圖片驗證碼為例來描述對驗證碼識別程序的訓練。假定已經(jīng)存在一個可以生成包含指定字符的圖片的驗證碼生成器G,可以利用G生成M組圖片驗證碼Q={Q1,Q2,...,QM},其中每組中包括大量的驗證碼圖片,例如包括不低于100000張圖片。M為可配置參數(shù),取值可以為大于1的自然數(shù),可基于所需計算準確度、響應時間、計算復雜度等設(shè)置M的具體取值。在一個示例中,M的取值范圍可以為[4,10]。
可針對每組圖片驗證碼Qi,i∈[1,M]訓練一個驗證碼識別程序Ri。不同的Ri對應于不同類型和/或不同特性的文字識別算法。在一個示例中,所訓練的至少一個驗證碼識別程序可以分別是:對噪聲點不敏感的算法、對模糊不敏感的算法、對圖像扭曲不敏感的算法、對文字字體變化不敏感的算法等。驗證碼識別程序的集合可以為R={R1,R2,...,RM}。使用多個不同的驗證碼識別程序?qū)τ靡粋€候選驗證碼進行識別,可以避免單個驗證碼識別程序的識別正確或錯誤的偶然性,且還能夠識別多種復雜的候選驗證碼(例如,噪聲較大、較模糊、圖像扭曲較嚴重),適應性好,從而能夠更準確地在后續(xù)處理中確定正確識別的概率。
可基于上述訓練好的一個或者多個驗證碼識別程序?qū)λ傻暮蜻x驗證碼進行識別,以確定當前候選驗證碼是否易于識別。例如,輸出經(jīng)識別的結(jié)果,并將該結(jié)果與生成候選驗證碼所基于的給定字符串進行比較,確定識別結(jié)果正確與否、正確率高低情況等。
在步驟S230,確定所述候選驗證碼被正確識別的概率。
在一個實施例中,可以基于驗證碼識別程序?qū)蜻x驗證碼的識別結(jié)果是否與生成候選驗證碼所基于的給定字符串完全相同來確定該候選驗證碼是否被正確識別。該實施例適用于對給定字符串進行形狀變化的場景,候選驗證碼的字符個數(shù)、字符排布順序等與給定字符串一致。例如,給定字符串為宋體的“驗證碼”三個字,基于此生成的候選驗證碼為草書的“驗證碼”。
在另一個實施例中,可以基于驗證碼識別程序?qū)蜻x驗證碼的識別結(jié)果是否與候選驗證碼完全相同來確定該候選驗證碼是否被正確識別。該實施例適用于候選驗證碼包括給定字符串的字符,但其字符排布順序的部分與給定字符串不一致的場景。
例如,當驗證碼識別程序?qū)蜻x驗證碼的識別結(jié)果與生成候選驗證碼所基于的給定字符串(或者候選驗證碼)完全相同時,確定該驗證碼識別程序識別正確,并且該候選驗證碼被正確識別一次。下一個驗證識別程序的識別結(jié)果仍與候選驗證碼或者生成該候選驗證碼所基于的給定字符串完全相同時,確定該驗證碼識別程序識別正確,并且該候選驗證碼被正確識別的次數(shù)繼續(xù)累加。以此類推,可以記錄所述候選驗證碼被所述多個驗證碼識別程序正確識別的次數(shù),并基于正確識別的次數(shù)和驗證碼識別程序的數(shù)目計算所述候選驗證碼被正確識別的概率。例如,給定字符串s,s中包括數(shù)字、英文字母和/或漢字字符,可調(diào)用圖片驗證碼生成器G生成對應的驗證碼圖片I(s);然后調(diào)用訓練好的驗證碼識別程序R={R1,R2,...,RM}分別對圖片I(s)進行識別,記錄M個驗證碼識別程序?qū)蜻x驗證碼識別正確的次數(shù)p,其中識別正確與否的標準可以如上所述。例如將候選驗證碼被正確識別的概率記為v,則v=p/M??苫谠摳怕蚀_定當前候選驗證碼是否能夠作為最終的驗證碼輸出。
在步驟S240,當候選驗證碼被正確識別的概率小于預定閾值時,輸出該候選驗證碼作為最終生成的驗證碼,否則返回所述生成候選驗證碼的步驟(即返回步驟S210)。
其中,預定閾值可以基于最終生成的驗證碼所應用的場合而設(shè)置。例如,當驗證碼將應用于涉及財產(chǎn)安全的領(lǐng)域時,可將預定閾值的值設(shè)置得相對大一些,例如設(shè)其取值范圍為[0.95,1]。再如,當驗證碼將應用于安全性要求相對較低的場合時,可將預定閾值的值設(shè)置得相對小一些,例如設(shè)其取值范圍為[0.8,0.85]。在普遍的應用中,可將預定閾值的取值范圍設(shè)為例如[0.8,0.99]。
接著上面的示例,候選驗證碼被正確識別的概率記為v=p/M,其中,M為驗證碼識別程序的數(shù)目,p為這些驗證碼識別程序?qū)蜻x驗證碼識別正確的次數(shù)。將預定閾值設(shè)為T,如果v小于T,則意味著當前候選驗證碼I(s)難以識別,可將該驗證碼返回,作為最終生成的驗證碼輸出;如果v大于T,則意味著當前候選驗證碼I(s)相對易于識別,則可丟棄該驗證碼,返回到步驟S210生成新的候選驗證碼用于下次識別判斷。
在一些示例中,若調(diào)用一個驗證碼識別程序?qū)λ傻暮蜻x驗證碼進行識別,則在步驟S230中,當該驗證碼識別程序的識別結(jié)果與候選驗證碼(或者生成該候選驗證碼所基于的給定字符串)完全相同時,確定該候選驗證碼被正確識別的概率為1,反之確定該候選驗證碼被正確識別的概率為0。進一步地,在步驟S240中,將被正確識別的概率為0的候選驗證碼作為最終生成的驗證碼輸出,反之,若該候選驗證碼被正確識別的概率為1,則返回步驟S210。
基于上面的描述,根據(jù)本發(fā)明實施例的用于生成驗證碼的方法在將最終生成的驗證碼發(fā)送出去之前,先調(diào)用內(nèi)部識別程序?qū)蜻x驗證碼的難易程度進行判斷,只發(fā)送安全性合格的驗證碼,從而可以大幅降低驗證碼被外部自動識別程序破解的風險,提高驗證碼的安全性。
示例性地,根據(jù)本發(fā)明實施例的用于生成驗證碼的方法可以在具有存儲器和處理器的設(shè)備、裝置或者系統(tǒng)中實現(xiàn)。
根據(jù)本發(fā)明實施例的用于生成驗證碼的方法可以部署在個人終端處,諸如智能電話、平板電腦、個人計算機等。替代地,根據(jù)本發(fā)明實施例的用于生成驗證碼的方法還可以部署在服務(wù)器端(或云端)。替代地,根據(jù)本發(fā)明實施例的用于生成驗證碼的方法還可以分布地部署在服務(wù)器端(或云端)和個人終端處。
圖3示出了根據(jù)本發(fā)明實施例的用于生成驗證碼的裝置300的示意性框圖。
如圖3所示,根據(jù)本發(fā)明實施例的用于生成驗證碼的裝置300包括候選驗證碼生成模塊310、候選驗證碼識別模塊320、識別正確率確定模塊330和最終驗證碼輸出模塊340。
候選驗證碼生成模塊310用于生成候選驗證碼。候選驗證碼識別模塊320用于調(diào)用至少一個驗證碼識別程序?qū)λ龊蜻x驗證碼進行識別。識別正確率確定模塊330用于確定所述候選驗證碼被正確識別的概率。最終驗證碼輸出模塊340用于在所述概率小于預定閾值時輸出所述候選驗證碼作為最終生成的驗證碼,并在所述概率大于或等于所述預定閾值時提示所述候選驗證碼生成模塊重新生成候選驗證碼。候選驗證碼生成模塊310、候選驗證碼識別模塊320、識別正確率確定模塊330和最終驗證碼輸出模塊340均可以由圖1所示的電子設(shè)備中的處理器102運行存儲裝置104中存儲的程序指令來實現(xiàn)。
根據(jù)本發(fā)明實施例,候選驗證碼生成模塊310可以生成圖片驗證碼、語音驗證碼或視頻驗證碼等。例如,候選驗證碼生成模塊310可以基于給定字符串生成包含該字符串的圖片驗證碼、語音驗證碼或視頻驗證碼等。其中,給定字符串可以包括數(shù)字、英文字母與漢字字符的任意組合。在另一個示例中,候選驗證碼生成模塊310可以生成基于圖片內(nèi)容而非字符內(nèi)容的驗證碼。
根據(jù)本發(fā)明實施例,候選驗證碼識別模塊320可以調(diào)用預先訓練好的至少一個不同的驗證碼識別程序?qū)λ傻暮蜻x驗證碼進行識別??苫谒傻暮蜻x驗證碼的類型進行驗證碼識別程序的不同訓練。例如,如果候選驗證碼為圖片驗證碼,則可基于大量的驗證碼圖片訓練一個或多個不同的驗證碼識別程序。類似地,如果候選驗證碼為語音驗證碼、視頻驗證碼或其他種類的驗證碼,則可相應地基于大量的驗證碼語音、視頻等來訓練一個或多個不同的驗證碼識別程序。
下面以圖片驗證碼為例來描述對驗證碼識別程序的訓練。假定已經(jīng)存在一個可以生成包含指定字符的圖片的驗證碼生成器G,可以利用G生成M組圖片驗證碼Q={Q1,Q2,…,QM},其中每組中包括大量的驗證碼圖片,例如包括不低于100000張圖片。M為可配置參數(shù),取值可以為大于1的自然數(shù),可基于所需計算準確度、響應時間、計算復雜度等設(shè)置M的具體取值。在一個示例中,M的取值范圍可以為[4,10]。
可針對每組圖片驗證碼Qi,i∈[1,M]訓練一個驗證碼識別程序Ri。不同的Ri對應于不同類型和/或不同特性的文字識別算法。在一個示例中,所訓練的一個或多個驗證碼識別程序可以分別是:對噪聲點不敏感的算法、對模糊不敏感的算法、對圖像扭曲不敏感的算法、對文字字體變化不敏感的算法等。驗證碼識別程序的集合可以為R={R1,R2,…,RM}。
候選驗證碼識別模塊320可基于上述訓練好的至少一個驗證碼識別程序?qū)λ傻暮蜻x驗證碼進行識別,以用于確定當前候選驗證碼是否易于識別。例如,候選驗證碼識別模塊320輸出經(jīng)識別的結(jié)果,并由識別正確率確定模塊330將該結(jié)果與生成候選驗證碼所基于的給定字符串進行比較,確定識別結(jié)果正確與否、正確率高低情況等。
根據(jù)本發(fā)明實施例,識別正確率確定模塊330可以基于驗證碼識別程序?qū)蜻x驗證碼的識別結(jié)果是否與生成候選驗證碼所基于的給定字符串完全相同來確定該候選驗證碼是否被正確識別。
例如,當驗證碼識別程序?qū)蜻x驗證碼的識別結(jié)果與生成候選驗證碼所基于的給定字符串完全相同時,識別正確率確定模塊330可確定該驗證碼識別程序識別正確,并且記錄該候選驗證碼被正確識別一次。下一個驗證識別程序的識別結(jié)果仍與生成候選驗證碼所基于的給定字符串完全相同時,則識別正確率確定模塊330可確定該驗證碼識別程序識別正確,并且將該候選驗證碼被正確識別的次數(shù)繼續(xù)累加。以此類推,識別正確率確定模塊330可以記錄所述候選驗證碼被所述至少一個驗證碼識別程序正確識別的次數(shù),并基于正確識別的次數(shù)和驗證碼識別程序的數(shù)目計算所述候選驗證碼被正確識別的概率。
例如,給定字符串s,s中包括數(shù)字、英文字母和/或漢字字符,候選驗證碼生成模塊310可調(diào)用圖片驗證碼生成器G生成對應的驗證碼圖片I(s)。然后,候選驗證碼識別模塊320調(diào)用訓練好的驗證碼識別程序R={R1,R2,...,RM}分別對圖片I(s)進行識別,由識別正確率確定模塊330記錄M個驗證碼識別程序?qū)蜻x驗證碼識別正確的次數(shù)p,其中識別正確與否的標準可以如上所述。例如將候選驗證碼被正確識別的概率記為v,則v=p/M。最終驗證碼輸出模塊340可基于該概率確定當前候選驗證碼是否能夠作為最終的驗證碼輸出。
根據(jù)本發(fā)明實施例,最終驗證碼輸出模塊340將候選驗證碼被正確識別的概率與預定閾值相比較,以確定當前候選驗證碼是否易于識別。其中,預定閾值可以基于最終生成的驗證碼所應用的場合而設(shè)置。例如,當驗證碼將應用于涉及財產(chǎn)安全的領(lǐng)域時,可將預定閾值的值設(shè)置得相對大一些,例如設(shè)其取值范圍為[0.95,1]。再如,當驗證碼將應用于安全性要求相對較低的場合時,可將預定閾值的值設(shè)置得相對小一些,例如設(shè)其取值范圍為[0.8,0.85]。在普遍的應用中,可將預定閾值的取值范圍設(shè)為例如[0.8,0.99]。
將預定閾值設(shè)為T,如果v小于T,則意味著當前候選驗證碼I(s)難以識別,則最終驗證碼輸出模塊340可將該驗證碼返回,作為最終生成的驗證碼輸出;如果v大于T,則意味著當前候選驗證碼I(s)相對易于識別,則最終驗證碼輸出模塊340可丟棄該驗證碼,并提示候選驗證碼生成模塊生成新的候選驗證碼用于下次識別判斷。
基于上面的描述,根據(jù)本發(fā)明實施例的用于生成驗證碼的裝置在將最終生成的驗證碼發(fā)送出去之前,先調(diào)用內(nèi)部識別程序?qū)蜻x驗證碼的難易程度進行判斷,只發(fā)送安全性合格的驗證碼,從而可以大幅降低驗證碼被外部自動識別程序破解的風險,提高驗證碼的安全性。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的模塊及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本發(fā)明的范圍。
圖4示出了根據(jù)本發(fā)明實施例的用于生成驗證碼的系統(tǒng)400的示意性框圖。用于生成驗證碼的系統(tǒng)400包括存儲裝置410以及處理器420。
其中,存儲裝置410存儲用于實現(xiàn)根據(jù)本發(fā)明實施例的用于生成驗證碼的方法中的相應步驟的程序代碼。處理器420用于運行存儲裝置420中存儲的程序代碼,以執(zhí)行根據(jù)本發(fā)明實施例的用于生成驗證碼的方法的相應步驟,并且用于實現(xiàn)根據(jù)本發(fā)明實施例的用于生成驗證碼的裝置中的相應模塊。
在一個實施例中,在所述程序代碼被處理器420運行時使得用于生成驗證碼的系統(tǒng)400執(zhí)行以下步驟:生成候選驗證碼;調(diào)用至少一個驗證碼識別程序?qū)λ龊蜻x驗證碼進行識別;確定所述候選驗證碼被正確識別的概率;以及當所述概率小于預定閾值時,輸出所述候選驗證碼作為最終生成的驗證碼,否則返回所述生成候選驗證碼的步驟。
在一個示例中,所述確定所述候選驗證碼被正確識別的概率的步驟進一步包括:記錄所述候選驗證碼被所述至少一個驗證碼識別程序正確識別的次數(shù);以及基于所述正確識別的次數(shù)和所述驗證碼識別程序的數(shù)目計算所述候選驗證碼被正確識別的概率。
在一個示例中,所述候選驗證碼基于給定字符串而生成,并且所述正確識別是指對所述候選驗證碼的識別結(jié)果與所述給定字符串完全相同。示例性地,所述給定字符串可以包括數(shù)字、英文字母與漢字字符的任意組合。
在一個示例中,所述至少一個驗證碼識別程序分別對應于不同類型和/或不同特性的文字識別算法。示例性地,所述至少一個驗證碼識別程序至少包括以下中的兩個或兩個以上:對噪聲點不敏感的算法、對模糊不敏感的算法、對圖像扭曲不敏感的算法、對文字字體變化不敏感的算法。
在一個示例中,所述生成候選驗證碼包括生成圖片驗證碼、語音驗證碼或視頻驗證碼。示例性地,所述至少一個驗證碼識別程序中的每一個基于大量驗證碼圖片、語音或視頻訓練而成。
在一個示例中,所述預定閾值基于所述最終生成的驗證碼所應用的場合而設(shè)置。
此外,根據(jù)本發(fā)明實施例,還提供了一種存儲介質(zhì),在所述存儲介質(zhì)上存儲了程序指令,在所述程序指令被計算機或處理器運行時用于執(zhí)行本發(fā)明實施例的用于生成驗證碼的方法的相應步驟,并且用于實現(xiàn)根據(jù)本發(fā)明實施例的用于生成驗證碼的裝置中的相應模塊。所述存儲介質(zhì)例如可以包括智能電話的存儲卡、平板電腦的存儲部件、個人計算機的硬盤、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPROM)、便攜式緊致盤只讀存儲器(CD-ROM)、USB存儲器、或者上述存儲介質(zhì)的任意組合。所述計算機可讀存儲介質(zhì)可以是一個或多個計算機可讀存儲介質(zhì)的任意組合,例如一個計算機可讀存儲介質(zhì)包含生成候選驗證碼的計算機可讀的程序代碼,另一個計算機可讀存儲介質(zhì)包含調(diào)用至少一個驗證碼識別程序?qū)λ龊蜻x驗證碼進行識別的計算機可讀的程序代碼,又一個計算機可讀存儲介質(zhì)包含確定所述候選驗證碼被正確識別的概率的計算機可讀的程序代碼,再一個計算機可讀存儲介質(zhì)包含當所述概率小于預定閾值時輸出所述候選驗證碼作為最終生成的驗證碼、否則提示重新生成候選驗證碼的計算機可讀的程序代碼。
在一個實施例中,所述計算機程序指令在被計算機運行時可以實現(xiàn)根據(jù)本發(fā)明實施例的用于生成驗證碼的裝置的各個功能模塊,并且/或者可以執(zhí)行根據(jù)本發(fā)明實施例的用于生成驗證碼的方法。
在一個實施例中,所述計算機程序指令在被計算機或處理器運行時使計算機或處理器執(zhí)行以下步驟:生成候選驗證碼;調(diào)用至少一個驗證碼識別程序?qū)λ龊蜻x驗證碼進行識別;確定所述候選驗證碼被正確識別的概率;以及當所述概率小于預定閾值時,輸出所述候選驗證碼作為最終生成的驗證碼,否則返回所述生成候選驗證碼的步驟。
在一個示例中,所述確定所述候選驗證碼被正確識別的概率的步驟進一步包括:記錄所述候選驗證碼被所述至少一個驗證碼識別程序正確識別的次數(shù);以及基于所述正確識別的次數(shù)和所述驗證碼識別程序的數(shù)目計算所述候選驗證碼被正確識別的概率。
在一個示例中,所述候選驗證碼基于給定字符串而生成,并且所述正確識別是指對所述候選驗證碼的識別結(jié)果與所述給定字符串完全相同。示例性地,所述給定字符串可以包括數(shù)字、英文字母與漢字字符的任意組合。
在一個示例中,所述至少一個驗證碼識別程序分別對應于不同類型和/或不同特性的文字識別算法。示例性地,所述至少一個驗證碼識別程序至少包括以下中的兩個或兩個以上:對噪聲點不敏感的算法、對模糊不敏感的算法、對圖像扭曲不敏感的算法、對文字字體變化不敏感的算法。
在一個示例中,所述生成候選驗證碼包括生成圖片驗證碼、語音驗證碼或視頻驗證碼。示例性地,所述至少一個驗證碼識別程序中的每一個基于大量驗證碼圖片、語音或視頻訓練而成。
在一個示例中,所述預定閾值基于所述最終生成的驗證碼所應用的場合而設(shè)置。
根據(jù)本發(fā)明實施例的用于生成驗證碼的裝置中的各模塊可以通過根據(jù)本發(fā)明實施例的用于生成驗證碼的電子設(shè)備的處理器運行在存儲器中存儲的計算機程序指令來實現(xiàn),或者可以在根據(jù)本發(fā)明實施例的計算機程序產(chǎn)品的計算機可讀存儲介質(zhì)中存儲的計算機指令被計算機運行時實現(xiàn)。
根據(jù)本發(fā)明實施例的用于生成驗證碼的方法、裝置、系統(tǒng)以及存儲介質(zhì)在將最終生成的驗證碼發(fā)送出去之前,先調(diào)用內(nèi)部識別程序?qū)蜻x驗證碼的難易程度進行判斷,只發(fā)送安全性合格的驗證碼,從而可以大幅降低驗證碼被外部自動識別程序破解的風險,提高驗證碼的安全性。
盡管這里已經(jīng)參考附圖描述了示例實施例,應理解上述示例實施例僅僅是示例性的,并且不意圖將本發(fā)明的范圍限制于此。本領(lǐng)域普通技術(shù)人員可以在其中進行各種改變和修改,而不偏離本發(fā)明的范圍和精神。所有這些改變和修改意在被包括在所附權(quán)利要求所要求的本發(fā)明的范圍之內(nèi)。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本發(fā)明的范圍。
在本申請所提供的幾個實施例中,應該理解到,所揭露的設(shè)備和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的設(shè)備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個設(shè)備,或一些特征可以忽略,或不執(zhí)行。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本發(fā)明并幫助理解各個發(fā)明方面中的一個或多個,在對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該本發(fā)明的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如相應的權(quán)利要求書所反映的那樣,其發(fā)明點在于可以用少于某個公開的單個實施例的所有特征的特征來解決相應的技術(shù)問題。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域的技術(shù)人員可以理解,除了特征之間相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的物品分析設(shè)備中的一些模塊的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
以上所述,僅為本發(fā)明的具體實施方式或?qū)唧w實施方式的說明,本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。本發(fā)明的保護范圍應以權(quán)利要求的保護范圍為準。