本發(fā)明涉及驗證碼技術(shù)領(lǐng)域,特別涉及一種數(shù)字驗證碼的生成方法及裝置。
背景技術(shù):
隨著人們對網(wǎng)絡(luò)安全的日益重視,驗證碼技術(shù)的發(fā)展越來越迅速。驗證碼的形式多種多樣,有數(shù)字驗證碼、字母驗證碼、圖形驗證碼及其組合等形式,而數(shù)字驗證碼是一種原理簡單且應(yīng)用廣泛的形式。驗證碼一般出現(xiàn)在安全驗證環(huán)節(jié)。出于防暴力破解的安全需要,驗證碼常常被用來驗證真實的用戶行為。
移動時代,通過手機短信接收數(shù)字驗證碼,是非常常見且比較有效的驗證手機號碼有效性或用戶真實性的場景。當(dāng)用戶需要在計算機上或者手機上的某個應(yīng)用程序內(nèi)填寫手機短信中的數(shù)字驗證碼時,用戶需要在短時間內(nèi)記住此數(shù)字驗證碼,因此可能需要多次打開短信進行查看。
現(xiàn)有技術(shù)中,數(shù)字驗證碼的每一位均從阿拉伯?dāng)?shù)字0~9中隨機選取,然后將所選取的結(jié)果生成為驗證碼。生成結(jié)果的一般情況是,得到其中每一位都不同而且無序的數(shù)字組合。但是,對于這樣的驗證碼,用戶很難在短時間內(nèi)將其記住,進而一次輸入正確。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種數(shù)字驗證碼的生成方法及裝置,以降低用戶對數(shù)字驗證碼的記憶難度。
為了達到上述目的,本發(fā)明實施例公開了一種數(shù)字驗證碼的生成方法,包括步驟:
當(dāng)需要生成一個數(shù)字驗證碼時,從數(shù)字0~9中選取第一數(shù)量個不同的數(shù)字;所述第一數(shù)量小于要生成的數(shù)字驗證碼的位數(shù);
按預(yù)設(shè)的規(guī)則對所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼;
將生成的數(shù)字驗證碼輸出至指定的用戶終端。
較佳的,所述按預(yù)設(shè)的規(guī)則對所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼,包括:
將選取的第一數(shù)量個不同的數(shù)字進行隨機排列或按照從小到大或從大到小的順序排列,根據(jù)要生成的數(shù)字驗證碼的位數(shù),在其中一個或多個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
較佳的,當(dāng)要生成的數(shù)字驗證碼的位數(shù)為4時,所述第一數(shù)量為3;
所述按預(yù)設(shè)的規(guī)則對所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼,包括:
將選取的3個不同的數(shù)字進行隨機排列或按照從小到大或從大到小的順序排列,在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
較佳的,當(dāng)要生成的數(shù)字驗證碼的位數(shù)為6時,所述第一數(shù)量為3~5;
所述按預(yù)設(shè)的規(guī)則對所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼,包括:
將選取的3~5個不同的數(shù)字進行隨機排列或按照從小到大或從大到小的順序排列,
若選取的數(shù)字為3個,則在其中每個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼;
若選取的數(shù)字為4個,則在其中兩個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼;
若選取的數(shù)字為5個,則在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
較佳的,所述將生成的數(shù)字驗證碼輸出至指定的用戶終端,包括:
將生成的數(shù)字驗證碼以短信的方式發(fā)送至用戶移動終端。
為了達到上述目的,本發(fā)明實施例還公開了一種數(shù)字驗證碼的生成裝置,所述裝置包括:
選取模塊,用于當(dāng)需要生成一個數(shù)字驗證碼時,從數(shù)字0~9中選取第一數(shù)量個不同的數(shù)字;所述第一數(shù)量小于要生成的數(shù)字驗證碼的位數(shù);
驗證碼生成模塊,用于按預(yù)設(shè)的規(guī)則對所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼;
驗證碼輸出模塊,用于將生成的數(shù)字驗證碼輸出至指定的用戶終端。
較佳的,所述驗證碼生成模塊包括排列子模塊和生成子模塊;
所述排列子模塊,用于將選取的第一數(shù)量個不同的數(shù)字進行隨機排列或按照從小到大或從大到小的順序排列;
所述生成子模塊,用于根據(jù)要生成的數(shù)字驗證碼的位數(shù),在其中一個或多個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
較佳的,所述排列子模塊為第一排列子模塊,所述生成子模塊為第一生成子模塊;
所述第一排列子模塊,用于當(dāng)要生成的數(shù)字驗證碼的位數(shù)為4,所述第一數(shù)量為3時,將選取的3個不同的數(shù)字進行隨機排列或按照從小到大或從大到小的順序排列;
所述第一生成子模塊,用于在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
較佳的,所述排列子模塊為第二排列子模塊,所述生成子模塊為第二生成子模塊;
所述第二排列子模塊,用于當(dāng)要生成的數(shù)字驗證碼的位數(shù)為6,所述第一數(shù)量為3~5時,將選取的3~5個不同的數(shù)字進行隨機排列或按照從小到大或從大到小的順序排列;
所述第二生成子模塊,用于:
若選取的數(shù)字為3個,則在其中每個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼;
若選取的數(shù)字為4個,則在其中兩個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼;
若選取的數(shù)字為5個,則在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
較佳的,所述驗證碼輸出模塊具體用于:
將生成的數(shù)字驗證碼以短信的方式發(fā)送至用戶移動終端。
由上述技術(shù)方案可見,本發(fā)明實施例是,當(dāng)需要生成一個數(shù)字驗證碼時,從數(shù)字0~9中選取第一數(shù)量個不同的數(shù)字;所述第一數(shù)量小于要生成的數(shù)字驗證碼的位數(shù);按預(yù)設(shè)的規(guī)則對所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼;將生成的數(shù)字驗證碼輸出至指定的用戶終端。
也就是說,本發(fā)明實施例按預(yù)設(shè)的規(guī)則對所選取的一定數(shù)量的不同數(shù)字進行排列組合,生成了至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼,從而降低了用戶對數(shù)字驗證碼的記憶難度。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹。顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種數(shù)字驗證碼的生成方法的流程示意圖;
圖2為本發(fā)明實施例提供的一種數(shù)字驗證碼的生成裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整的描述。顯然,所描述的實施例僅僅是本發(fā)明的一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例提供了一種數(shù)字驗證碼的生成方法及裝置。在該方案中,當(dāng)需要生成一個數(shù)字驗證碼時,首先從數(shù)字0~9中選取第一數(shù)量個不同的數(shù)字;其中,所述第一數(shù)量小于要生成的數(shù)字驗證碼的位數(shù)。然后,按預(yù)設(shè)的規(guī)則對 所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼。最后,將生成的數(shù)字驗證碼輸出至指定的用戶終端。
下面通過具體實施例,對本發(fā)明進行詳細說明。
圖1為本發(fā)明實施例提供的一種數(shù)字驗證碼的生成方法的流程示意圖,包括如下步驟:
步驟S101:當(dāng)需要生成一個數(shù)字驗證碼時,從數(shù)字0~9中選取第一數(shù)量個不同的數(shù)字。
具體地,所述第一數(shù)量小于要生成的數(shù)字驗證碼的位數(shù)。
假設(shè),要生成的數(shù)字驗證碼的位數(shù)為4,所述第一數(shù)量可以為3,那么從數(shù)字0~9中選取的不同數(shù)字可以為:012,123,321,147,915,246,327,582,359,248,等等。
假設(shè),要生成的數(shù)字驗證碼的位數(shù)為6,所述第一數(shù)量可以為3~5,那么從數(shù)字0~9中選取的不同數(shù)字可以為:321,147,915,246,1234,2475,4213,1504,12589,04587,45723,等等。
當(dāng)然,在實際應(yīng)用中,數(shù)字驗證碼的位數(shù)可以為5、7、8等其他位數(shù)。只是說,目前常見的數(shù)字驗證碼是4位或者6位的,其他的位數(shù)對于本發(fā)明實施例來說也是適用的。
步驟S102:按預(yù)設(shè)的規(guī)則對所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼。
實際應(yīng)用中,可以將選取的第一數(shù)量個不同的數(shù)字進行隨機排列或按照從小到大或從大到小的順序排列,根據(jù)要生成的數(shù)字驗證碼的位數(shù),在其中一個或多個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
具體地,當(dāng)要生成的數(shù)字驗證碼的位數(shù)為4時,所述第一數(shù)量為3;所述按預(yù)設(shè)的規(guī)則對所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼,可以有如下2種方式來實現(xiàn)。
第1種,包括:
將選取的3個不同的數(shù)字隨機排列,在其中一個數(shù)字后插入一個與該數(shù)字 相同的數(shù)字,生成數(shù)字驗證碼。
例如,對于步驟S101中列舉的部分數(shù)字“012,123,321,147,915,246,327,582,359,248”,將其進行隨機排列,然后在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,所生成的數(shù)字驗證碼為:
012→0012,0112,0122
123→1123,1223,1233
321→3321,3221,3211
147→1147,1447,1477
915→9915,9115,9155
246→2246,2446,2466
327→3327,3227,3277
582→5582,5882,5822
359→3359,3559,3599
248→2248,2448,2488
其中,箭頭左側(cè)的數(shù)據(jù)為原數(shù)據(jù),箭頭右側(cè)的數(shù)據(jù)為最終生成的數(shù)字驗證碼。可見,按照預(yù)設(shè)的規(guī)則所生成的數(shù)字驗證碼包括了連續(xù)出現(xiàn)的2個相同數(shù)字,具有一定的規(guī)律性,從而降低用戶對數(shù)字驗證碼的記憶難度。
第2種,包括:
將選取的3個不同的數(shù)字按照從小到大或從大到小的順序排列,在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
例如,對于步驟S101中列舉的部分數(shù)字“012,123,321,147,915,246,327,582,359,248”,將其按照從小到大的順序排列,然后在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,所生成的數(shù)字驗證碼為:
012→0012,0112,0122
123→1123,1223,1233
321→1123,1223,1233
147→1147,1447,1477
915→1159,1559,1599
246→2246,2446,2466
327→2337,2237,2377
582→2558,2588,2258
359→3359,3559,3599
248→2248,2448,2488
其中,箭頭左側(cè)的數(shù)據(jù)為原數(shù)據(jù),箭頭右側(cè)的數(shù)據(jù)為最終生成的數(shù)字驗證碼??梢?,按照預(yù)設(shè)的規(guī)則所生成的數(shù)字驗證碼包括了連續(xù)出現(xiàn)的2個相同數(shù)字,具有一定的規(guī)律性,從而降低用戶對數(shù)字驗證碼的記憶難度。
類似的,當(dāng)要生成的數(shù)字驗證碼的位數(shù)為6時,所述第一數(shù)量為3~5;所述按預(yù)設(shè)的規(guī)則對所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼,也可以有如下2種方式。
第1種,包括:
將選取的3~5個不同的數(shù)字隨機排列,
若選取的數(shù)字為3個,則在其中每個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼;
若選取的數(shù)字為4個,則在其中兩個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼;
若選取的數(shù)字為5個,則在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
例如,對于步驟S101中列舉的部分數(shù)字“321,147,915,246,1234,2475,4213,1504,12589,04587,45723”,將其進行隨機排列,然后在其中每個或兩個或一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,所生成的數(shù)字驗證碼為:
321→332211
147→114477
915→991155
246→224466
1234→112234,112334,112344,122334,122344,123344
2475→224475,224775,224755,244775,244755,247755
4213→442213,442113,442133,422113,422133,421133
1504→115504,115004,115044,155004,155044,150044
12589→112589,122589,125589,125889,125899
04587→004587,044587,045587,045887,045877
45723→445723,455723,457723,457223,457233
其中,箭頭左側(cè)的數(shù)據(jù)為原數(shù)據(jù),箭頭右側(cè)的數(shù)據(jù)為最終生成的數(shù)字驗證碼。可見,按照預(yù)設(shè)的規(guī)則所生成的數(shù)字驗證碼包括了連續(xù)出現(xiàn)的2個相同數(shù)字,具有一定的規(guī)律性,從而降低用戶對數(shù)字驗證碼的記憶難度。
第2種,包括:
將選取的3~5個不同的數(shù)字按照從小到大或從大到小的順序排列,
若選取的數(shù)字為3個,則在其中每個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼;
若選取的數(shù)字為4個,則在其中兩個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼;
若選取的數(shù)字為5個,則在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
例如,對于步驟S101中列舉的部分數(shù)字“321,147,915,246,1234,2475,4213,1504,12589,04587,45723”,將其按照從小到大的順序排列,然后在其中每個或兩個或一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,所生成的數(shù)字驗證碼為:
321→112233
147→114477
915→115599
246→224466
1234→112234,112334,112344,122334,122344,123344
2475→224457,224577,224557,244577,244557,245577
4213→122344,112344,123344,112234,122334,112334
1504→011455,001145,011445,001455,014455,001445
12589→112589,122589,125589,125889,125899
04587→004587,044587,045587,045887,045877
45723→234457,234557,234577,223457,233457
其中,箭頭左側(cè)的數(shù)據(jù)為原數(shù)據(jù),箭頭右側(cè)的數(shù)據(jù)為最終生成的數(shù)字驗證碼??梢?,按照預(yù)設(shè)的規(guī)則所生成的數(shù)字驗證碼包括了連續(xù)出現(xiàn)的2個相同數(shù)字,具有一定的規(guī)律性,從而了降低用戶對數(shù)字驗證碼的記憶難度。
可以理解的是,上述實施例只是部分實施例,而不是全部實施例。
步驟S103:將生成的數(shù)字驗證碼輸出至指定的用戶終端。
具體地,將生成的數(shù)字驗證碼輸出至指定的用戶終端,可以包括:將生成的數(shù)字驗證碼以短信的方式發(fā)送至用戶移動終端。具體的實現(xiàn)方式與現(xiàn)有技術(shù)相同,這里不再贅述。
由以上可見,本實施例中,按預(yù)設(shè)的規(guī)則對所選取的一定數(shù)量的不同數(shù)字進行排列組合,生成了至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼,能夠降低用戶對數(shù)字驗證碼的記憶難度。
圖2為本發(fā)明實施例提供的一種數(shù)字驗證碼的生成裝置的結(jié)構(gòu)示意圖,所述裝置包括:選取模塊201、驗證碼生成模塊202和驗證碼輸出模塊203。
其中,選取模塊201,用于當(dāng)需要生成一個數(shù)字驗證碼時,從數(shù)字0~9中 選取第一數(shù)量個不同的數(shù)字。
具體地,所述第一數(shù)量小于要生成的數(shù)字驗證碼的位數(shù)。
驗證碼生成模塊202,用于按預(yù)設(shè)的規(guī)則對所述第一數(shù)量個不同的數(shù)字進行排列組合,生成至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼。
本實施例中,驗證碼生成模塊202可以包括:排列子模塊和生成子模塊。(圖中未示出)
所述排列子模塊,用于將選取的第一數(shù)量個不同的數(shù)字進行隨機排列或按照從小到大或從大到小的順序排列;
所述生成子模塊,用于根據(jù)要生成的數(shù)字驗證碼的位數(shù),在其中一個或多個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
本實施例中,所述排列子模塊可以為第一排列子模塊,所述生成子模塊可以為第一生成子模塊。(圖中未示出)
所述第一排列子模塊,用于當(dāng)要生成的數(shù)字驗證碼的位數(shù)為4,所述第一數(shù)量為3時,將選取的3個不同的數(shù)字進行隨機排列或按照從小到大或從大到小的順序排列;
所述第一生成子模塊,用于在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
本實施例中,所述排列子模塊可以為第二排列子模塊,所述生成子模塊可以為第二生成子模塊。(圖中未示出)
所述第二排列子模塊,用于當(dāng)要生成的數(shù)字驗證碼的位數(shù)為6,所述第一數(shù)量為3~5時,將選取的3~5個不同的數(shù)字進行隨機排列或按照從小到大或從大到小的順序排列;
所述第二生成子模塊,用于:
若選取的數(shù)字為3個,則在其中每個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼;
若選取的數(shù)字為4個,則在其中兩個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼;
若選取的數(shù)字為5個,則在其中一個數(shù)字后插入一個與該數(shù)字相同的數(shù)字,生成數(shù)字驗證碼。
驗證碼輸出模塊203,用于將生成的數(shù)字驗證碼輸出至指定的用戶終端。
本實施例中,驗證碼輸出模塊203可以用于:將生成的數(shù)字驗證碼以短信的方式發(fā)送至用戶移動終端。
由以上可見,本實施例中,按預(yù)設(shè)的規(guī)則對所選取的一定數(shù)量的不同數(shù)字進行排列組合,生成了至少包括連續(xù)出現(xiàn)的2個相同數(shù)字的數(shù)字驗證碼,能夠降低用戶對數(shù)字驗證碼的記憶難度。
對于裝置實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域普通技術(shù)人員可以理解,上述實施方式中的全部或部分步驟是能夠通過程序指令相關(guān)的硬件來完成的,所述的程序可以存儲于計算機可讀取存儲介質(zhì)中。這里所稱存儲介質(zhì),是指ROM/RAM、磁碟、光盤等。
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。