驗證碼生成方法及裝置與流程
2023-08-09 06:33:31

本申請涉及驗證碼技術領域,更具體地,涉及驗證碼生成方法及裝置。
背景技術:
驗證碼,應用在各種公共系統中,用來判斷訪問公共系統的用戶是人還是機器人程序。機器人程序通過自動執行,惡意破壞公共系統,如票務系統中,機器人程序可以惡意刷票;論壇系統中,機器人程序可以論壇灌水等等。而驗證碼的應用,可以有效識別出機器人程序,從而保護合法用戶對公共系統的正常訪問。
目前驗證碼以圖片的形式展示給用戶,圖片中包含驗證碼數據,如文字、英文字母等。該驗證碼容易被惡意程序破解,即容易從圖片形式的驗證碼中提取出驗證碼數據,導致驗證碼的安全性較低。
技術實現要素:
有鑑於此,本申請提供了一種驗證碼生成方法,用以生成安全性較高的驗證碼。另外,本申請還提供了一種驗證碼生成裝置,用以保證所述方法在實際中的應用及實現。
為實現所述目的,本申請提供的技術方案如下:
本申請的第一方面提供了一種驗證碼生成方法,包括:
在預先生成的顏色集合中,選擇可分辨參數的參數值最高的顏色作為備選顏色;其中,所述顏色集合中包括多種顏色,且所述可分辨參數用來表示從所述顏色集合中分辨出一種顏色的難易程度;
對所述備選顏色添加隨機噪聲,獲得前景顏色;
將所述前景顏色填充到驗證碼的前景區域中;
將所述顏色集合中的各種顏色隨機填充到驗證碼的背景區域中,以得到色盲圖效果的驗證碼。
本申請的第二方面提供了一種驗證碼生成裝置,包括:
備選顏色選擇模塊,用於在預先生成的顏色集合中,選擇可分辨參數的參數值最高的顏色作為備選顏色;其中,所述顏色集合中包括多種顏色,且所述可分辨參數用來表示從所述顏色集合中分辨出一種顏色的難易程度;
前景顏色獲得模塊,用於對所述備選顏色添加隨機噪聲,獲得前景顏色;
前景顏色填充模塊,用於將所述前景顏色填充到驗證碼的前景區域中;
背景顏色填充模塊,用於將所述顏色集合中的各種顏色隨機填充到驗證碼的背景區域中,以得到色盲圖效果的驗證碼。
由以上技術方案可知,本申請具有如下有益效果:
本申請提供了一種驗證碼生成方法實施例,本實施例在預先生成的多種顏色中,選擇可分辨參數的參數值最高的顏色,對選擇的顏色添加隨機噪聲後,填充到驗證碼的前景區域中,並將預先生成的多種顏色全部隨機填充到驗證碼的背景區域中,從而獲得驗證碼。本實施例生成的驗證碼,背景顏色包括多種顏色,觀看效果類似色盲圖,可以增強基於字符分割或神經網絡投影算法提取驗證碼數據的難度,另外,前景顏色添加有隨機噪聲,可以增強基於色彩分類算法提取驗證碼數據的難度,總而言之,本實施例增強了驗證碼數據的提取難度,提高了驗證碼的安全性。
附圖說明
為了更清楚地說明本申請實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為本申請提供的驗證碼生成方法實施例1的流程圖;
圖2為本申請提供的生成多種顏色的流程圖;
圖3為本申請提供的選擇可分辨參數的參數值最高的備選顏色的流程圖;
圖4為本申請提供的驗證碼生成方法實施例2的流程圖;
圖5為本申請提供的一種驗證碼的示例圖;
圖6為本申請提供的驗證碼生成裝置實施例1的結構示意圖;
圖7為本申請提供的驗證碼生成裝置實施例2的結構示意圖。
具體實施方式
下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本申請保護的範圍。
參見圖1,其示出了本申請提供的驗證碼生成方法實施例1的流程。如圖1所示,本實施例可以具體包括步驟S101~步驟S104。
步驟S101:在預先生成的顏色集合中,選擇可分辨參數的參數值最高的顏色作為備選顏色;其中,顏色集合中包括多種顏色,且可分辨參數用來表示從顏色集合中分辨出一種顏色的難易程度。
之所以顏色集合中包括多種顏色是因為:現有驗證碼的背景顏色通常為單一顏色,使得從背景顏色中分離出前景(即驗證碼數據)變得非常容易,驗證碼的安全性較低。
顏色集合中的顏色種類越多,則生成的驗證碼的背景顏色越多樣,使得驗證碼的安全性越高。但是,顏色集合中的顏色種類越多,則造成人眼越不容易從背景中區分出驗證碼數據,因此,顏色集合中顏色的種類數需要限定在一定範圍內,優選是20-80範圍內的數值,當然,此處的數值僅僅是一個示例,在具體實施中,還可以是其他。
在顏色集合中,選擇一種備選顏色,用來填充在前景區域中。選擇的標準是,備選顏色的可分辨參數的參數值最高,從而最容易從顏色集合中區分出備選顏色,其中,可分辨參數可以是亮度參數、或者是與其他顏色的顏色距離(均方距離或絕對值距離)參數、或者是以上兩個參數的結合。選擇備選顏色具體方式詳見下文。
步驟S102:對備選顏色添加隨機噪聲,獲得前景顏色。
由於隨機噪聲尤其是高強度隨機噪聲可以對抗色彩分類,因此,在備選顏色中添加隨機噪聲後,獲得最終添加到前景區域中的顏色,即本步驟中的前景顏色。
在備選顏色中添加隨機噪聲的具體方式可以是,為備選顏色的每個顏色空間生成對應的隨機噪聲,並將隨機噪聲添加到對應顏色空間的顏色分量中。
例如,備選顏色a具有Y、U及V三個顏色空間,三個顏色空間的顏色分量分別為90、2及3。假設為顏色空間Y生成隨機噪聲33、為顏色空間U生成隨機噪聲28,為顏色空間V生成隨機噪聲34。
將隨機噪聲33添加到顏色空間Y的顏色分量90,將隨機噪聲28添加到顏色空間U的顏色分量2,將隨機噪聲34添加到顏色空間V的顏色分量3,獲得的前景顏色的三個顏色分量分別為123、30及37。
步驟S103:將前景顏色填充到驗證碼的前景區域中。
其中,可以按照色盲圖的前景顏色的填充方式,將前景顏色填充到前景區域中,前景區域的內容是待輸入的驗證碼數據,當然,驗證碼數據可以經過移位、旋轉等處理。
色盲圖的前景顏色的填充方式是,將前景顏色填充在大小不同的子區域中,子區域如三角形、圓形、方形、菱形及梯形等。
步驟S104:將顏色集合中的各種顏色隨機填充到驗證碼的背景區域中,以得到色盲圖效果的驗證碼。
其中,將顏色集合中的各種顏色填充到驗證碼的背景區域中,填充的方式可以隨機,或者按照色盲圖的背景顏色填充方式,即將各種顏色任意填充在大小不同的子區域中,子區域如三角形、圓形、方形、菱形及梯形等,從而生成觀看效果上類似色盲圖的驗證碼。
多種顏色的背景區域,使得惡意程序很難識別出前景區域中驗證碼數據的邊界,提高了驗證碼的安全性。
需要說明的是,本步驟與步驟S102及步驟S103的執行順序並不做具體限定,可以是先執行步驟S102及步驟S103以填充驗證碼的前景區域,也可以是先執行步驟S104以填充驗證碼的背景區域,或者,還可以是同時執行,以同時填充驗證碼的前景區域及背景區域。
由以上技術方案可知,本申請提供了一種驗證碼生成方法實施例,在預先生成的多種顏色中,選擇可分辨參數的參數值最高的顏色,對選擇的顏色添加隨機噪聲後,填充到驗證碼的前景區域中,並將預先生成的多種顏色全部隨機填充到驗證碼的背景區域中,從而獲得驗證碼。本實施例生成的驗證碼,背景顏色包括多種顏色,觀看效果類似色盲圖,可以增強基於字符分割或神經網絡投影算法提取驗證碼數據的難度,另外,前景顏色添加有隨機噪聲,可以增強基於色彩分類算法提取驗證碼數據的難度,總而言之,本實施例增強了驗證碼數據的提取難度,提高了驗證碼的安全性。
以下對驗證碼生成方法中使用的顏色集合進行詳細說明。如圖2所示,顏色集合中各種顏色的生成步驟可以具體包括步驟S201~步驟S203。
步驟S201:根據待生成顏色的顏色格式,確定顏色格式對應的多個顏色空間。
其中,待生成顏色的顏色格式可以是現有的任意一種顏色格式,如GRB格式或YUV格式。不同的顏色格式,其所對應的顏色空間的個數及種類也不同。以YUV格式為例,其所對應的顏色空間為三個,分別為顏色空間Y、顏色空間U及顏色空間V。
步驟S202:為每個顏色空間確定多個目標顏色分量。
不同的顏色空間,目標顏色分量的個數可以相同,也可以不同。例如,顏色空間Y的目標顏色分量為4個、顏色空間U的目標顏色分量為3個、顏色空間V的目標顏色分量為4個。
需要說明的是,顏色空間的各個目標顏色分量大小不同,可以對各個目標顏色分量排序,同一顏色空間的多個目標顏色分量具有如下特徵:相鄰的目標顏色分量之間的差值相等。
假設,顏色空間Y的目標顏色分量分別為0、64、128及192,可見,相鄰的目標顏色分量的差值均為64。在本實施例中確定多個目標顏色分量的具體方式可以是,將每個顏色空間的顏色分量範圍均等分為多份,並將每份中的最小顏色分量確定為對應顏色空間的目標顏色分量。
以顏色空間Y為例,顏色空間Y的顏色分量範圍是0-255,則將該顏色分量範圍均分為四等分,分別為0-63、64-127、128-191及192-255,將每份中最小的顏色分量確定為顏色空間的一個目標顏色分量,那麼對於顏色空間Y來說,其對應的目標顏色分量分別為0、64、128及192。需要說明的是,顏色分量均等分的份數並不局限於示例中的4,可以是其他數值。
使用上述方法確定目標顏色分量,可以避免目標顏色分量集中取值,從而導致顏色集合中的顏色過於相近,不容易區分的問題。
步驟S203:將多個顏色空間的多個目標顏色分量進行排列組合,獲得多種顏色。
顏色空間為多個,同一顏色空間的目標顏色分量也為多個,則可以將不同顏色空間的各個目標顏色分量進行排列組合,從而獲得多種顏色。
以YUV顏色格式的顏色為例,假設顏色空間Y的目標顏色分量分別為0、64、128及192,顏色空間U的目標顏色分量分別為0、85及170,顏色空間V的目標顏色分量分別為0、85及170。排列組合的方式是,[0、0、0]、[0、0、85]、[0、0、170]、[0、85、0]、[0、85、85]、[0、85、170]……以此類推,直至[192、170、170]。其中,每一個排列組合表示一種顏色。
可見,獲得顏色的種類數取決於每個顏色空間的目標顏色分量的個數。以YUV顏色格式的顏色為例,假設顏色空間Y的目標顏色分量有4個,顏色空間U的目標顏色分量有3個,顏色空間V的目標顏色分量有4個,則排列組合後生成的顏色種類為4*3*4即48種。
在另一實施方式中,如圖3所示,在步驟S202確定多個目標顏色分量之後,步驟S203將多個目標顏色分量排列組合之前,還可以包括步驟S204。
步驟S204:對每個目標顏色分量添加隨機噪聲。從而可以對添加有隨機噪聲的多個目標顏色分量進行排列組合,得到多種顏色。
其中,隨機噪聲是生成的一個隨機數。在確定目標顏色分量的具體實現方式中,隨機噪聲的取值範圍可以具有限定值。
以上述均等分顏色分量範圍獲得目標顏色分量的方式為例,為了避免某個目標顏色分量添加隨機噪聲後與其他目標顏色分量相同,則可以根據均等分的份數,來限定隨機噪聲的取值。
例如,顏色分量範圍為0-255,將顏色分量範圍均等分為4份,目標顏色分量分別為0、64、128及192。相鄰兩者之間的差值為64,因此,可以限定隨機噪聲的最大值為64,即生成0-64之間的隨機數,則各個目標顏色分量添加隨機噪聲後,也不可能與其他目標顏色分量相同,從而避免隨意添加隨機噪聲可能造成的目標顏色分量相同的情況。
在具體應用中,備選顏色的可分辨參數可以是顏色的亮度及與其他顏色的顏色距離兩個因素,也就是說,在顏色集合中,選擇亮度較高、且與其他顏色的顏色距離較大的顏色作為備選顏色。
具體地,如圖3所示,選擇可分辨參數最高的備選顏色的實現方式可以包括步驟S301~步驟S302。
步驟S301:在預先生成的顏色集合中,確定亮度較高的多個顏色。
由於亮度參數可以決定人眼對驗證碼數據的分辨程度,亮度較暗的驗證碼數據不容易從背景顏色中分辨出來,因此,在顏色集合中,確定亮度較高的多個顏色作為初步選擇的顏色。在實施中,初選顏色的數量可以根據實際情況具體設置。
例如,在顏色集合中,選擇出亮度較高的5個顏色。
步驟S302:在確定的多個顏色中,選擇與顏色集合中其他顏色的顏色距離最大的顏色作為備選顏色。
其中,在上一步驟使用亮度選擇出顏色後,進一步使用距離對顏色進行選擇。顏色距離可以是均方距離也可以是絕對值距離。
若以均方距離作為顏色距離,則具體計算公式可以是:
<![CDATA[ D = Σ X Ω ( Y A - Y X ) 2 + ( U A - U X ) 2 + ( V A - V X ) 2 3 . ]]>
其中,D為顏色距離,Ω為預先生成的顏色集合,A為步驟S301確定出的某種顏色,X為該顏色集合中除了顏色A以外的任意一種顏色,YA為顏色A的顏色空間Y的顏色分量,UA為顏色A的顏色空間U的顏色分量,VA為顏色A的顏色空間V的顏色分量。
若以絕對值距離作為顏色距離,則具體計算公式可以是:
該公式中的參數說明見上文。
根據以上計算公式,計算步驟S301確定出來的每個顏色的顏色距離,並將顏色距離最大的顏色確定為備選顏色,備選顏色用來填充驗證碼的前景區域。
參見圖4,其示出了本申請提供的驗證碼生成方法實施例2的流程。如圖4所示,本實施例可以具體包括步驟S401~步驟S405。
步驟S401:在預先生成的顏色集合中,選擇可分辨參數的取值最高的顏色作為備選顏色;其中,顏色集合中包括多種顏色,且可分辨參數用來表示從顏色集合中分辨出某一種顏色的難易程度。
步驟S402:對備選顏色添加隨機噪聲,獲得前景顏色。
步驟S403:將前景顏色填充到驗證碼的前景區域中。
其中,步驟S401~步驟S403的說明可以參見上文驗證碼生成方法實施例1,此處並不贅述。
步驟S404:對顏色集合中的各種顏色添加隨機噪聲。
其中,顏色集合中包含多種顏色,在將該多種顏色添加到背景區域之前,再次對每種顏色添加隨機噪聲。添加的方式可以是,針對顏色集合中的每種顏色的每個顏色空間,生成隨機噪聲,並將該隨機噪聲添加到該顏色空間的顏色分量上。
例如,顏色集合中的某一種顏色包含YUV三個顏色空間,三個顏色空間的顏色分量分別為64、29及3。假設為顏色空間Y生成的隨機噪聲為2,為顏色空間U生成的隨機噪聲為11,為顏色空間V生成的隨機噪聲為27,則添加隨機噪聲後,YUV三個顏色空間的顏色分量分別為66、40及30。
在將顏色集合中的顏色添加到背景區域中之前,再次添加隨機噪聲,是為了進一步對抗色彩分類算法對驗證碼數據的提取。
步驟S405:按照色盲圖的背景顏色填充方式,將添加隨機噪聲後的顏色填充到驗證碼的背景區域中,獲得驗證碼。
其中,將添加隨機噪聲後的顏色,填充到背景區域的三角形、圓形、方形、菱形等子區域中,從而生成色盲圖形式的驗證碼。
參見圖5示出的一種驗證碼。需要說明的是,該驗證碼的背景區域本身包括多種顏色,但將彩色灰度化處理後生成圖5所示的驗證碼。如圖5所示,驗證碼的背景區域中包括多個小區域,小區域內隨意填充有各種顏色,此種形式的驗證碼從觀看效果上類似色盲圖。
以下對本申請提供的驗證碼生成裝置進行介紹,需要說明的是,下文有關驗證碼生成裝置的說明可以參見上文提供的驗證碼生成方法,以下並不贅述。
與上述驗證碼生成方法實施例1相對應,本申請提供了一種驗證碼生成裝置實施例1。如圖6所示,本實施例可以具體包括:備選顏色選擇模塊601、前景顏色獲得模塊602、前景顏色填充模塊603及背景顏色填充模塊604。
備選顏色選擇模塊601,用於在預先生成的顏色集合中,選擇可分辨參數最高的顏色作為備選顏色;其中,顏色集合中包括多種顏色,且可分辨參數用來表示從顏色集合中分辨出某一種顏色的難易程度;
前景顏色獲得模塊602,用於對備選顏色添加隨機噪聲,獲得前景顏色;
前景顏色填充模塊603,用於將前景顏色填充到驗證碼的前景區域中;
背景顏色填充模塊604,用於將顏色集合中的各種顏色隨機填充到驗證碼的背景區域中,以得到色盲圖效果的驗證碼。
由以上技術方案可知,本申請提供了一種驗證碼生成方法實施例,備選顏色選擇模塊601在預先生成的多種顏色中,選擇可分辨參數的參數值最高的顏色,前景顏色獲得模塊602對選擇的顏色添加隨機噪聲後,由前景顏色填充模塊603將添加隨機噪聲後的顏色填充到驗證碼的前景區域中,背景顏色填充模塊604將預先生成的多種顏色全部隨機填充到驗證碼的背景區域中,從而獲得驗證碼。本實施例生成的驗證碼,背景顏色包括多種顏色,觀看效果類似色盲圖,可以增強基於字符分割或神經網絡投影算法提取驗證碼數據的難度,另外,前景顏色添加有隨機噪聲,可以增強基於色彩分類算法提取驗證碼數據的難度,總而言之,本實施例增強了驗證碼數據的提取難度,提高了驗證碼的安全性。
如圖7所示,在一個具體示例中,驗證碼生成裝置還包括:顏色集合生成模塊605。
其中,顏色集合生成模塊605,用於生成顏色集合中的各種顏色;
其中,顏色集合生成模塊605可以具體包括:顏色空間確定子模塊701、顏色分量確定子模塊702及顏色分量組合子模塊703。
顏色空間確定子模塊701,用於根據待生成顏色的顏色格式,確定顏色格式對應的多個顏色空間;
顏色分量確定子模塊702,用於為每個顏色空間確定多個目標顏色分量;其中,同一顏色空間相鄰的目標顏色分量之間的差值相等;
顏色分量組合子模塊703,用於將多個顏色空間的多個目標顏色分量進行排列組合,獲得多種顏色。
在另一具體示例中,顏色分量確定子模塊702可以包括:顏色分量均分子模塊。
顏色分量均分子模塊,用於將每個顏色空間的顏色分量範圍均等分為多份,並將每份中的最小顏色分量確定為對應顏色空間的目標顏色分量。
在另一具體示例中,顏色集合生成模塊605還可以包括:第一隨機噪聲添加子模塊。
第一隨機噪聲添加子模塊,用於在將多個顏色空間的多個目標顏色分量進行排列組合之前,對每個目標顏色分量添加隨機噪聲。
在另一具體示例中,備選顏色選擇模塊601可以包括:亮度選擇子模塊及距離選擇子模塊。
亮度選擇子模塊,用於在預先生成的顏色集合中,確定亮度較高的多個顏色;
距離選擇子模塊,用於在確定的多個顏色中,選擇與顏色集合中其他顏色的顏色距離最大的顏色作為備選顏色。
在另一具體示例中,驗證碼生成裝置中的背景顏色填充模塊604可以包括:第二隨機噪聲添加子模塊及背景顏色填充子模塊。
第二隨機噪聲添加子模塊,用於對顏色集合中的各種顏色添加隨機噪聲;
背景顏色填充子模塊,用於按照色盲圖的背景顏色填充方式,將添加隨機噪聲後的顏色填充到驗證碼的背景區域中,獲得驗證碼。
需要說明的是,本說明書中的各個實施例均採用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
還需要說明的是,在本文中,諸如第一和第二等之類的關係術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關係或者順序。而且,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句「包括一個……」限定的要素,並不排除在包括上述要素的過程、方法、物品或者設備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本申請。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或範圍的情況下,在其它實施例中實現。因此,本申請將不會被限制於本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的範圍。