一種基于字典的復(fù)雜密碼遍歷方法及裝置制造方法
【專利摘要】本發(fā)明公開(kāi)一種基于字典的復(fù)雜密碼遍歷方法,包括如下步驟:S1、從字典文件中讀取密碼生成密碼集合,判斷是否預(yù)設(shè)為大小寫(xiě)擴(kuò)展,若是,進(jìn)入步驟S2,若否,進(jìn)入步驟S3;S2、將字母密碼進(jìn)行大小寫(xiě)擴(kuò)展,將擴(kuò)展的字母加入所述密碼集合;S3、獲取密碼集合中密碼所要構(gòu)成字典密碼的密碼段數(shù)N,判斷N值是否為0,若是,直接按照設(shè)置的暴力遍歷的規(guī)則遍歷,若否,進(jìn)入步驟S4;S4、獲取設(shè)置的暴力遍歷的規(guī)則;S5、將所述暴力遍歷規(guī)則和密碼集合作為遍歷算法的數(shù)據(jù)源,使用遍歷算法對(duì)字典密碼和暴力密碼進(jìn)行構(gòu)造生成最終的遍歷密碼。本發(fā)明還公開(kāi)一種基于字典的復(fù)雜密碼遍歷裝置。
【專利說(shuō)明】—種基于字典的復(fù)雜密碼遍歷方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉一種基于字典的復(fù)雜密碼遍歷方法及裝置。
【背景技術(shù)】
[0002]暴力遍歷和字典遍歷是目前密碼恢復(fù)中最常用的兩種遍歷方式。暴力遍歷就是對(duì)用戶制定的規(guī)則內(nèi)的所有密碼進(jìn)行遍歷,字典遍歷則是對(duì)字典文件中的密碼進(jìn)行遍歷。暴力方式往往需要較多的規(guī)則來(lái)覆蓋盡可能大的密碼空間以提高密碼恢復(fù)的成功率,但密碼空間太大將造成遍歷時(shí)間倍增,甚至需要成百上千年的時(shí)間,使密碼恢復(fù)失去意義。字典遍歷方式的成功率往往受限于字典中的密碼數(shù),由于字典的密碼數(shù)一般不會(huì)太多,因此可以短時(shí)間內(nèi)完成密碼的遍歷,但一般只能恢復(fù)出常用的密碼,對(duì)于一些復(fù)雜密碼無(wú)能為力。
[0003]如何在有效的時(shí)間內(nèi)恢復(fù)出盡可能復(fù)雜的密碼是當(dāng)前的主要研究方向。目前,針對(duì)暴力方式,研究主要集中在通過(guò)各種硬件加速、算法優(yōu)化、分布式技術(shù)來(lái)提高遍歷的速度,以此來(lái)縮短遍歷的時(shí)間。但是通過(guò)提高遍歷速度的方法只能使遍歷時(shí)間線性減小,而密碼長(zhǎng)度增長(zhǎng)、密碼字符集增大卻使遍歷時(shí)間幾何級(jí)數(shù)增大;而針對(duì)字典遍歷,研究主要集中在對(duì)字典的收集方面,收集的密碼數(shù)比較有限。
[0004]申請(qǐng)?zhí)枮?01210521641.2的專利申請(qǐng)文件《復(fù)雜密碼快速遍歷算法及裝置》公開(kāi)了一種針對(duì)暴力遍歷設(shè)計(jì)的分段規(guī)則和對(duì)應(yīng)的遍歷算法,實(shí)現(xiàn)復(fù)雜密碼的快速遍歷。但是對(duì)于包含單詞類型的密碼,該專利需要知道該單詞為前提,如以密碼HelloLiuHelloSS為例,是以知道密碼中包含“Hello”為前提,但是在通常情況下,可能并不知道密碼中的任何信息,在此情況下,該算法的密碼空間將擴(kuò)大到無(wú)法在有限時(shí)間內(nèi)完成遍歷。因此,該算法在應(yīng)用中受到一定程度的限制。
【發(fā)明內(nèi)容】
[0005]為解決上述問(wèn)題,本發(fā)明采用的一個(gè)技術(shù)方案是:
[0006]提供一種基于字典的復(fù)雜密碼遍歷方法,包括如下步驟:S1、從字典文件中讀取密碼生成密碼集合,然后判斷是否預(yù)設(shè)為大小寫(xiě)擴(kuò)展,若是,進(jìn)入步驟S2,若否,進(jìn)入步驟S3 ;S2、將所述密碼中的字母密碼進(jìn)行大小寫(xiě)擴(kuò)展,將擴(kuò)展的字母加入所述密碼集合,然后進(jìn)入步驟S3 ;S3、獲取密碼集合中密碼所要構(gòu)成字典密碼的密碼段數(shù)N,判斷N值是否為0,若是,直接按照設(shè)置的暴力遍歷的規(guī)則遍歷,若否,進(jìn)入步驟S4,其中,字典密碼的密碼空間是密碼集合中密碼數(shù)的N次方;S4、獲取設(shè)置的暴力遍歷的規(guī)則,規(guī)則的長(zhǎng)度隨密碼集合中密碼的組合數(shù)和規(guī)則字符集中的字符數(shù)的增大而減??;S5、將所述暴力遍歷規(guī)則和密碼集合作為遍歷算法的數(shù)據(jù)源,使用遍歷算法對(duì)密碼集合中的密碼構(gòu)造的字典密碼和暴力規(guī)則構(gòu)造的暴力密碼進(jìn)行構(gòu)造生成最終的遍歷密碼。
[0007]本發(fā)明采用的另一個(gè)技術(shù)方案是:
[0008]提供一種基于字典的復(fù)雜密碼遍歷裝置,包括:第一判斷單元,用于從字典文件中讀取密碼生成密碼集合,然后判斷是否預(yù)設(shè)為大小寫(xiě)擴(kuò)展,并當(dāng)判定結(jié)果為否時(shí)通知下述第二判斷單元執(zhí)行操作;擴(kuò)展單元,用于當(dāng)?shù)谝慌袛鄦卧卸ńY(jié)果為是時(shí),將所述密碼中的字母密碼進(jìn)行大小寫(xiě)擴(kuò)展,將擴(kuò)展的字母加入所述密碼集合,然后通知下述第二判斷單元執(zhí)行操作;第二判斷單元,用于獲取密碼集合中密碼所要構(gòu)成字典密碼的密碼段數(shù)N,判斷N值是否為O,若是,直接按照設(shè)置的暴力遍歷的規(guī)則遍歷,其中,字典密碼的密碼空間是密碼集合中密碼數(shù)的N次方;暴力遍歷單元,用于當(dāng)?shù)诙袛鄦卧呐卸ńY(jié)果為否時(shí),獲取設(shè)置的暴力遍歷的規(guī)則,其中,規(guī)則的長(zhǎng)度隨密碼集合中密碼的組合數(shù)和規(guī)則字符集中的字符數(shù)的增大而減??;最終遍歷單元,用于將所述暴力遍歷規(guī)則和密碼集合作為遍歷算法的數(shù)據(jù)源,使用遍歷算法對(duì)密碼集合中的密碼構(gòu)造的字典密碼和暴力規(guī)則構(gòu)造的暴力密碼進(jìn)行構(gòu)造生成最終的遍歷密碼。
[0009]本發(fā)明的基于字典的復(fù)雜密碼遍歷方法及裝置,提出了字典與暴力規(guī)則混合遍歷的算法,在沒(méi)有任何密碼信息的情況下,可以在短時(shí)間內(nèi)完成復(fù)雜密碼的遍歷。
【專利附圖】
【附圖說(shuō)明】
[0010]圖1是本發(fā)明一實(shí)施方式中一種基于字典的復(fù)雜密碼遍歷方法的執(zhí)行流程圖;
[0011]圖2是圖1中步驟S5的具體實(shí)現(xiàn)流程圖;
[0012]圖3是本發(fā)明一實(shí)施方式中一種基于字典的復(fù)雜密碼遍歷裝置的功能模塊圖;
[0013]圖4是圖3中最終遍歷單元的功能模塊圖。
【具體實(shí)施方式】
[0014]為詳細(xì)說(shuō)明本發(fā)明的技術(shù)內(nèi)容、構(gòu)造特征、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖詳予說(shuō)明。
[0015]發(fā)明人通過(guò)對(duì)大量實(shí)際使用密碼的研究發(fā)現(xiàn),復(fù)雜密碼(長(zhǎng)度較長(zhǎng)、字符類型較多)往往具有以下特征:a、包含常用的英文單詞、拼音或常用密碼山、具有分段特征,每段為一個(gè)詞或同一字符集(字符集指數(shù)字、小寫(xiě)、大寫(xiě)等字符的集合)的密碼、對(duì)于包含字母的詞,會(huì)有大小寫(xiě)的變換;d、是由一些簡(jiǎn)單密碼組合而成;e、越長(zhǎng)的密碼中,常包含多個(gè)同一單詞,但重復(fù)次數(shù)一般3次以內(nèi)。
[0016]綜上可總結(jié)出,復(fù)雜密碼往往存在其中某些部分包含字典中密碼的特征,另外一些部分又包含暴力遍歷中規(guī)則的一些特征,因此,本方案將字典引入到暴力遍歷的規(guī)則中,設(shè)計(jì)了一種基于字典的復(fù)雜密碼遍歷方法,將暴力遍歷和字典遍歷相結(jié)合,在沒(méi)有任何密碼信息的前提下,極大減小所需遍歷的密碼空間,實(shí)現(xiàn)復(fù)雜密碼的快速遍歷。
[0017]請(qǐng)參閱圖1,是本發(fā)明一實(shí)施方式中一種基于字典的復(fù)雜密碼遍歷方法的執(zhí)行流程圖,該基于字典的復(fù)雜密碼遍歷方法包括如下步驟:
[0018]步驟S1、從字典文件中讀取密碼生成密碼集合,然后判斷是否預(yù)設(shè)為大小寫(xiě)擴(kuò)展,若是,進(jìn)入步驟S2,若否,進(jìn)入步驟S3 ;
[0019]在本實(shí)施方式中,所述大小寫(xiě)擴(kuò)展包括三種字符特征類型:全密碼小寫(xiě)、全密碼大寫(xiě)和首字母大寫(xiě)。
[0020]步驟S2、將所述密碼中的字母密碼進(jìn)行大小寫(xiě)擴(kuò)展,將擴(kuò)展的字母加入所述密碼集合,然后進(jìn)入步驟S3 ;這樣可以覆蓋更多的密碼。
[0021]步驟S3、獲取密碼集合中密碼所要構(gòu)成字典密碼的密碼段數(shù)N,判斷N值是否為0,若是,直接按照設(shè)置的暴力遍歷的規(guī)則遍歷,若否,進(jìn)入步驟S4,其中,字典密碼的密碼空間是密碼集合中密碼數(shù)的N次方;
[0022]N值指的是構(gòu)成字典密碼的密碼段數(shù),即在最終的遍歷密碼中所包含的密碼集合中密碼的個(gè)數(shù),N為O時(shí)表示字典密碼不出現(xiàn),即遍歷的時(shí)候不將字典密碼代入算法參與遍歷,只遍歷暴力遍歷的規(guī)則所構(gòu)成的密碼。
[0023]比如,字典中包含I個(gè)密碼“Test”,其中暴力遍歷的規(guī)則所構(gòu)成的密碼中,一段規(guī)則為3位小寫(xiě),一段規(guī)則為3位數(shù)字;當(dāng)N為O時(shí),遍歷的密碼就只是暴力遍歷的規(guī)則規(guī)則構(gòu)成的密碼,如“abcl23”;當(dāng)N為I時(shí),則密碼集合中的密碼出現(xiàn)I次,構(gòu)成的密碼如“abcTestl23”,N為2,則字典密碼出現(xiàn)2次,構(gòu)成的密碼如“Testl23abcTest”。
[0024]字典的密碼數(shù)通常較多,如果N設(shè)置過(guò)大也將使密碼空間暴漲。一般情況下,復(fù)雜密碼最多出現(xiàn)3次簡(jiǎn)單密碼組合,因此N可取值0-3。
[0025]步驟S4、獲取設(shè)置的暴力遍歷的規(guī)則。其中,規(guī)則的長(zhǎng)度隨密碼集合中密碼的組合數(shù)和規(guī)則字符集中的字符數(shù)的增大而減??;
[0026]具體地,N較小可以設(shè)置較長(zhǎng)的規(guī)則,以覆蓋盡可能多密碼空間;規(guī)則長(zhǎng)度越長(zhǎng),密碼空間越大,遍歷時(shí)間越長(zhǎng),因此不應(yīng)設(shè)置太長(zhǎng)。例如,當(dāng)N=I時(shí),可采用9位以內(nèi)小寫(xiě)、數(shù)字的分段規(guī)則或12位以內(nèi)數(shù)字規(guī)則;N=2時(shí),可采用6位以內(nèi)小寫(xiě)、數(shù)字的分段規(guī)則或8位以內(nèi)數(shù)字規(guī)則;N=3時(shí),可采用3位以內(nèi)小寫(xiě)、數(shù)字分段規(guī)則或4位以內(nèi)數(shù)字規(guī)則。
[0027]步驟S5、將所述暴力遍歷的規(guī)則和密碼集合作為遍歷算法的數(shù)據(jù)源,使用遍歷算法對(duì)密碼集合中的密碼構(gòu)造的字典密碼和暴力規(guī)則構(gòu)造的暴力密碼進(jìn)行構(gòu)造生成最終的遍歷密碼。
[0028]請(qǐng)參閱圖2,是圖1中步驟S5的具體實(shí)現(xiàn)流程圖。所述步驟S5具體實(shí)現(xiàn)步驟包括:
[0029]S51、將密碼合集中的密碼定義為密碼段,使用密碼段進(jìn)行密碼段數(shù)為N的排列組合生成字典密碼,使用分隔符號(hào)分隔密碼段,分隔符號(hào)的個(gè)數(shù)為N+1個(gè)。在本實(shí)施方式中,在同一字典密碼中的不同密碼段的字符特征相同。
[0030]例如,設(shè)置分隔符號(hào)位特殊符號(hào)‘#,來(lái)標(biāo)識(shí)密碼間的分隔,以字典中包含兩個(gè)密碼“hello”,“china”為例,如在步驟SI中判定不對(duì)密碼進(jìn)行大小寫(xiě)擴(kuò)展,當(dāng)N取值為2時(shí),生成密碼集合如下:
[0031][#hello#hello#, #hello#china#, #china#hello#, #china#china#],總共有 4 個(gè)
字典密碼。
[0032]如在步驟S2中對(duì)密碼大小進(jìn)行了擴(kuò)展,并且由于一般情況處于同一段中的不同密碼具有相同的字符特征,因此得到密碼集合如下:
[0033][#hello#hello#, #hel lo#china#, #china#hel lo#, #china#china#,#Hello#Hello#, #Hello#China#, #China#Hello#, #China#China#, #HELL0#HELL0#,#HELL0#CHINA#, #CHINA#HELL0#, #CHINA#CHINA#],總共 12 種排列組合,本方案過(guò)濾掉相同密碼段中不同特征密碼的排列組合,將排列組合數(shù)由36種降為12種,減少密碼空間增加遍歷速度。
[0034]S52、根據(jù)暴力遍歷規(guī)則構(gòu)造暴力密碼;
[0035]取暴力遍歷的規(guī)則中各段字符集的第I個(gè)字符填充暴力密碼段,各暴力密碼段之間用第二分隔符分隔,例如“*”,構(gòu)造出第I個(gè)分段密碼;
[0036]固定高位密碼,即固定第I位之后的密碼,然后依次使用對(duì)應(yīng)字符集的所有字符對(duì)第I位密碼輪進(jìn)行換,每次輪換就構(gòu)造出I個(gè)分段密碼;
[0037]第I位密碼完成所有字符輪換后,第2位密碼選取對(duì)應(yīng)字符集的下一個(gè)字符,然后第I位再次輪換字符集的所有字符;
[0038]依此類推,直到最高位完成其對(duì)應(yīng)字符集所有字符的輪換,至此完成暴力遍歷規(guī)則中該條分段規(guī)則的遍歷。
[0039]以暴力遍歷規(guī)則為3位數(shù)字和3位小寫(xiě)的組合為例,密碼遍歷過(guò)程如下,其中代表密碼中段與段的分隔符:
[0040]000*aaa->100*aaa->200*aaa->...->900*aaa->010*aaa->110*aaa->...->910*aaa->...->999*aaa->000*baa->...->999*zaa_>...>999*zzz。
[0041]S53、選取一組未參與遍歷的字典密碼作為當(dāng)前字典密碼,然后進(jìn)入步驟S54 ;例如選取上述字典密碼“#hello#hello#”作為當(dāng)前密碼。
[0042]S54、選取一個(gè)暴力密碼作為當(dāng)前字典密碼的當(dāng)前帶入密碼,進(jìn)入步驟S45,其中當(dāng)前帶入密碼有K段密碼段,I ^ K ;例如選取上述暴力規(guī)則密碼組合集中第一組密碼“ 000*aaa ”作為當(dāng)前帶入密碼。
[0043]S55、用當(dāng)前帶入密碼依次替換不同位置的分隔符號(hào)同時(shí)將其它分隔符號(hào)刪除生成遍歷密碼碼,然后用當(dāng)前帶入密碼的第k段密碼段替換第η個(gè)分隔符號(hào),同時(shí)用從第k+1到第K段的密碼段組合依次替換第n+1到N個(gè)分隔符并將其它分隔符刪除生成遍歷密碼,然后進(jìn)入步驟S46,其中KkSnSN;
[0044]例如,首先將000*aaa依次替換“#hello#hello#”中不同位置的“#,,得到遍歷密石馬:000aaa hello he I 1 > he I 1OOOaaa hello、hello helloOOOaaa。然后用第 I 段密碼段“000”替換第I個(gè)分隔符號(hào),同時(shí)用第2段密碼段依次替換第2到3個(gè)分隔符構(gòu)成遍歷密碼,以及用第I段密碼段“000”替換第2個(gè)分隔符號(hào),同時(shí)用第2段密碼替換第3個(gè)分隔符構(gòu)成如下遍歷密碼:000hello aaa hello、000hello hello aaa、helloOOOhello aaa。
[0045]S56、判斷n值是否已經(jīng)遍歷從I到N,若是,則進(jìn)入步驟S57,若否,將η值加I并返回步驟S55。
[0046]S57、判定當(dāng)前帶入密碼遍歷完畢,判斷是否還存在未作為當(dāng)前字典密碼的當(dāng)前帶入密碼,若是,返回步驟S44選取下一個(gè)當(dāng)前帶入密碼,若否,則進(jìn)入步驟S58 ;
[0047]S58、判定當(dāng)前字典密碼遍歷完畢,判斷是否還存在未參與遍歷的字典密碼,若是,返回步驟S53選取下一組當(dāng)前字典密碼,若否,執(zhí)行步驟S59 ; [0048]S59、將全部遍歷密碼生成最終的遍歷密碼。例如,只存一組密碼字典“#hello#hello#”,則匯總所述全部的的遍歷密碼生成最終的遍歷密碼:000aaahellohello、helloOOOaaa hello、hello hello000aaa、000hello aaa he I 1 Λ OOOhel lohel 1aaa、helloOOOhello aaa。
[0049]請(qǐng)參閱圖3,是本發(fā)明一實(shí)施方式中一種基于字典的復(fù)雜密碼遍歷裝置的功能模塊圖,所述的基于字典的復(fù)雜密碼遍歷方法應(yīng)用于該裝置中,該基于字典的復(fù)雜密碼遍歷裝置包括:第一判斷單元、擴(kuò)展單元、第二判斷單元、暴力遍歷單元以及最終遍歷單元。
[0050]第一判斷單元用于從字典文件中讀取密碼生成密碼集合,然后判斷是否預(yù)設(shè)為大小寫(xiě)擴(kuò)展,并當(dāng)判定結(jié)果為否時(shí)通知下述第二判斷單元執(zhí)行操作。
[0051]擴(kuò)展單元用于當(dāng)?shù)谝慌袛鄦卧卸ńY(jié)果為是時(shí),將所述密碼中的字母密碼進(jìn)行大小寫(xiě)擴(kuò)展,將擴(kuò)展的字母加入所述密碼集合,然后通知下述第二判斷單元執(zhí)行操作。
[0052]第二判斷單元用于獲取密碼集合中密碼所要構(gòu)成字典密碼的密碼段數(shù)N,判斷N值是否為0,若是,直接按照設(shè)置的暴力遍歷的規(guī)則遍歷,其中,字典密碼的密碼空間是密碼集合中密碼數(shù)的N次方。
[0053]暴力遍歷單元用于當(dāng)?shù)诙袛鄦卧呐卸ńY(jié)果為否時(shí),獲取設(shè)置的暴力遍歷的規(guī)貝U,其中,規(guī)則的長(zhǎng)度隨密碼集合中密碼的組合數(shù)和規(guī)則字符集中的字符數(shù)的增大而減小。
[0054]最終遍歷單元用于將所述暴力遍歷規(guī)則和密碼集合作為遍歷算法的數(shù)據(jù)源,使用遍歷算法對(duì)密碼集合中的密碼構(gòu)造的字典密碼和暴力規(guī)則構(gòu)造的暴力密碼進(jìn)行構(gòu)造生成最終的遍歷密碼。
[0055]在本實(shí)施方式中,所述大小寫(xiě)擴(kuò)展包括三種字符特征類型:全密碼小寫(xiě)、全密碼大寫(xiě)和首字母大寫(xiě)。
[0056]請(qǐng)參閱圖4,是圖3中最終遍歷單元的功能模塊圖,所述最終遍歷單元具體包括:第一生成子單元、第二生成子單元、第一選取子單元、第二選取子單元、帶入子單元、第一判斷子單元、第二判斷子單元、第三判斷子單元、以及最終生成子單元。
[0057]第一生成子單元用于將密碼合集中的密碼定義為密碼段,使用密碼段進(jìn)行密碼段數(shù)為N的排列組合生成字典密碼,使用分隔符號(hào)分隔密碼段,分隔符號(hào)的個(gè)數(shù)為N+1個(gè)。在本實(shí)施方式中,同一字典密碼中的不同密碼段的字符特征相同。
[0058]第二生成子單元用于根據(jù)暴力遍歷規(guī)則構(gòu)造暴力密碼。
[0059]第一選取子單元用于當(dāng)?shù)谝簧勺訂卧僮魍瓿珊?,選取一組未參與遍歷的字典密碼作為當(dāng)前字典密碼。
[0060]第二選取子單元用于當(dāng)?shù)谝贿x取子單元選取完成后,選取一個(gè)暴力密碼作為當(dāng)前字典密碼的當(dāng)前帶入密碼,其中當(dāng)前帶入密碼有K段密碼段,I < K。
[0061]帶入子單元用于當(dāng)?shù)诙x取子單元選取完成后,用當(dāng)前帶入密碼依次替換不同位置的分隔符號(hào)同時(shí)將其它分隔符號(hào)刪除生成遍歷密碼碼,然后用當(dāng)前帶入密碼的第k段密碼段替換第η個(gè)分隔符號(hào),同時(shí)用從第k+Ι到第K段的密碼段組合依次替換第n+1到N個(gè)分隔符并將其它分隔符刪除生成遍歷密碼,其中I < k < η < N。
[0062]第一判斷子單元用于當(dāng)帶入子單元完成操作后,判斷η值是否已經(jīng)遍歷從I到N,當(dāng)判定結(jié)果為否是將η值加I并通知帶入子單元執(zhí)行操作。
[0063]第二判斷子單元用于當(dāng)?shù)谝慌袛嘧訂卧卸ńY(jié)果為是時(shí),判定當(dāng)前帶入密碼遍歷完畢,判斷是否還存在未作為當(dāng)前字典密碼的當(dāng)前帶入密碼,當(dāng)判定結(jié)果為是時(shí)通知第二選取子單元選取下一個(gè)當(dāng)前帶入密碼。
[0064]第三判斷子單元用于當(dāng)?shù)诙袛嘧訂卧卸ńY(jié)果為否時(shí),判定當(dāng)前字典密碼遍歷完畢,判斷是否還存在未參與遍歷的字典密碼,當(dāng)判定結(jié)果為是時(shí)通知第一選取子單元選取下一組當(dāng)前字典密碼。
[0065]最終生成子單元用于當(dāng)?shù)谌袛嘧訂卧卸ńY(jié)果為否時(shí),將帶入子單元生成的全部遍歷密碼生成最終的遍歷密碼。
[0066]目前的字典,通常都能達(dá)到上億條的密碼,但絕大部分可以用更簡(jiǎn)單的元密碼來(lái)組合得到,這些元密碼一般都是由常用的單詞、拼音和數(shù)字等組成,總量不超過(guò)5萬(wàn)條。使用元密碼構(gòu)成的字典,可以大大減少遍歷的密碼空間,并且可以組合出足夠復(fù)雜的密碼。
[0067]以密碼HelloLiuHello88為例,專利《復(fù)雜密碼快速遍歷算法及裝置》在知道密碼中包含單詞“Hello”的前提下,其密碼空間為757,193,143, 529, 996, 160個(gè)密碼。而單詞“Hello”和拼音“Liu”是常用密碼,“88”其實(shí)也為常用密碼,已經(jīng)存在于字典中,但為了便于說(shuō)明更普遍的情況,假設(shè)該密碼不存在于字典中。根據(jù)本方案的算法,字典的密碼根據(jù)出現(xiàn)次數(shù),組合數(shù)將被擴(kuò)展到3*50000+3*500002+3*500003,規(guī)則設(shè)定為1_2位大寫(xiě)、小寫(xiě)和數(shù)字(由于本用例在2位規(guī)則時(shí)已經(jīng)可以結(jié)束遍歷,因此只計(jì)算1-2位的密碼空間;設(shè)置大小寫(xiě)和數(shù)字,是為了與專利《復(fù)雜密碼快速遍歷算法及裝置》采用相同的字符集)。當(dāng)密碼字典出現(xiàn)O次時(shí),密碼空間為10+26+26+102+262+262=1514,出現(xiàn)I次時(shí),密碼空間為3*50000*2*1514=454,200,000,出現(xiàn) 2 次時(shí),密碼空間為 3*500002*3*1514=34,065,000,00
O,000,出現(xiàn) 3 次時(shí),密碼空間為 3*500003*4*1514=2,271,000,000,000,000,000,由此可以計(jì)算出采用本方案總的密碼空間為2,271,034,065,454,201,514,空間僅比專利《復(fù)雜密碼快速遍歷算法及裝置》知道密碼中包含單詞“Hello”情況的密碼空間增大了 2倍。計(jì)算空間時(shí)為了便于計(jì)算,字典密碼的擴(kuò)展只是簡(jiǎn)單地乘系數(shù)3,但實(shí)際上,字典中包含數(shù)字密碼是不需要進(jìn)行擴(kuò)展的,而且組合過(guò)程中存在構(gòu)造出相同的密碼,這部分需要過(guò)濾,因此總的密碼空間比計(jì)算的空間要更小。
[0068]本發(fā)明的基于字典的復(fù)雜密碼遍歷方法及裝置,提出了字典與暴力規(guī)則混合遍歷的算法,在沒(méi)有任何密碼信息的情況下,可以在短時(shí)間內(nèi)完成復(fù)雜密碼的遍歷。
[0069]以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的【技術(shù)領(lǐng)域】,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種基于字典的復(fù)雜密碼遍歷方法,其特征在于,包括如下步驟: 51、從字典文件中讀取密碼生成密碼集合,然后判斷是否預(yù)設(shè)為大小寫(xiě)擴(kuò)展,若是,進(jìn)入步驟S2,若否,進(jìn)入步驟S3 ; 52、將所述密碼中的字母密碼進(jìn)行大小寫(xiě)擴(kuò)展,將擴(kuò)展的字母加入所述密碼集合,然后進(jìn)入步驟S3 ; 53、獲取密碼集合中密碼所要構(gòu)成字典密碼的密碼段數(shù)N,判斷N值是否為O,若是,直接按照設(shè)置的暴力遍歷的規(guī)則遍歷,若否,進(jìn)入步驟S4,其中,字典密碼的密碼空間是密碼集合中密碼數(shù)的N次方; 54、獲取設(shè)置的暴力遍歷的規(guī)則,規(guī)則的長(zhǎng)度隨密碼集合中密碼的組合數(shù)和規(guī)則字符集中的字符數(shù)的增大而減小; 55、將所述暴力遍歷規(guī)則和密碼集合作為遍歷算法的數(shù)據(jù)源,使用遍歷算法對(duì)密碼集合中的密碼構(gòu)造的字典密碼和暴力規(guī)則構(gòu)造的暴力密碼進(jìn)行構(gòu)造生成最終的遍歷密碼。
2.根據(jù)權(quán)利要求1所述的一種基于字典的復(fù)雜密碼遍歷方法,其特征在于,所述大小寫(xiě)擴(kuò)展包括三種字符特征類型:全密碼小寫(xiě)、全密碼大寫(xiě)和首字母大寫(xiě)。
3.根據(jù)權(quán)利要求1所述的一種基于字典的復(fù)雜密碼遍歷方法,其特征在于,所述步驟S5具體步驟包括: 551、將密碼合集中的密碼定義為密碼段,使用密碼段進(jìn)行密碼段數(shù)為N的排列組合生成字典密碼,使用分隔符號(hào)分隔密碼段,分隔符號(hào)的個(gè)數(shù)為N+1個(gè); 552、根據(jù)暴力遍歷規(guī)則構(gòu)`造暴力密碼: 553、選取一組未參與遍歷的字典密碼作為當(dāng)前字典密碼,然后進(jìn)入步驟S54; 554、選取一個(gè)暴力密碼作為當(dāng)前字典密碼的當(dāng)前帶入密碼,進(jìn)入步驟S55,其中當(dāng)前帶入密碼有K段密碼段,I 555、用當(dāng)前帶入密碼依次替換不同位置的分隔符號(hào)同時(shí)將其它分隔符號(hào)刪除生成遍歷密碼碼,然后用當(dāng)前帶入密碼的第k段密碼段替換第η個(gè)分隔符號(hào),同時(shí)用從第k+Ι到第K段的密碼段組合依次替換第n+1到N個(gè)分隔符并將其它分隔符刪除生成遍歷密碼,然后進(jìn)入步驟S56,其中KkSnSN; 556、判斷η值是否已經(jīng)遍歷從I到N,若是,則進(jìn)入步驟S57,若否,將η值加I并返回步驟S55 ; 557、判定當(dāng)前帶入密碼遍歷完畢,判斷是否還存在未作為當(dāng)前字典密碼的當(dāng)前帶入密碼,若是,返回步驟S54選取下一個(gè)當(dāng)前帶入密碼,若否,則進(jìn)入步驟S58 ; 558、判定當(dāng)前字典密碼遍歷完畢,判斷是否還存在未參與遍歷的字典密碼,若是,返回步驟S53選取下一組當(dāng)前字典密碼,若否,執(zhí)行步驟S59 ; 559、將全部遍歷密碼生成最終的遍歷密碼。
4.根據(jù)權(quán)利要求3所述的一種基于字典的復(fù)雜密碼遍歷方法,其特征在于,所述步驟S51中在同一字典密碼中的不同密碼段的字符特征相同。
5.一種基于字典的復(fù)雜密碼遍歷裝置,其特征在于,包括: 第一判斷單元,用于從字典文件中讀取密碼生成密碼集合,然后判斷是否預(yù)設(shè)為大小寫(xiě)擴(kuò)展,并當(dāng)判定結(jié)果為否時(shí)通知下述第二判斷單元執(zhí)行操作; 擴(kuò)展單元,用于當(dāng)?shù)谝慌袛鄦卧卸ńY(jié)果為是時(shí),將所述密碼中的字母密碼進(jìn)行大小寫(xiě)擴(kuò)展,將擴(kuò)展的字母加入所述密碼集合,然后通知下述第二判斷單元執(zhí)行操作; 第二判斷單元,用于獲取密碼集合中密碼所要構(gòu)成字典密碼的密碼段數(shù)N,判斷N值是否為O,若是,直接按照設(shè)置的暴力遍歷的規(guī)則遍歷,其中,字典密碼的密碼空間是密碼集合中密碼數(shù)的N次方; 暴力遍歷單元,用于當(dāng)?shù)诙袛鄦卧呐卸ńY(jié)果為否時(shí),獲取設(shè)置的暴力遍歷的規(guī)則,其中,規(guī)則的長(zhǎng)度隨密碼集合中密碼的組合數(shù)和規(guī)則字符集中的字符數(shù)的增大而減??; 最終遍歷單元,用于將所述暴力遍歷規(guī)則和密碼集合作為遍歷算法的數(shù)據(jù)源,使用遍歷算法對(duì)密碼集合中的密碼構(gòu)造的字典密碼和暴力規(guī)則構(gòu)造的暴力密碼進(jìn)行構(gòu)造生成最終的遍歷密碼。
6.根據(jù)權(quán)利要求5所述的一種基于字典的復(fù)雜密碼遍歷裝置,其特征在于,所述大小寫(xiě)擴(kuò)展包括三種字符特征類型:全密碼小寫(xiě)、全密碼大寫(xiě)和首字母大寫(xiě)。
7.根據(jù)權(quán)利要求6所述的一種基于字典的復(fù)雜密碼遍歷裝置,其特征在于,所述最終遍歷單元具體包括: 第一生成子單元,用于將密碼合集中的密碼定義為密碼段,使用密碼段進(jìn)行密碼段數(shù)為N的排列組合生成字典密碼,使用分隔符號(hào)分隔密碼段,分隔符號(hào)的個(gè)數(shù)為N+1個(gè); 第二生成子單元,用于根據(jù)暴力遍歷規(guī)則構(gòu)造暴力密碼: 第一選取子單元,用于當(dāng)?shù)谝簧勺訂卧僮魍瓿珊?,選取一組未參與遍歷的字典密碼作為當(dāng)前字典密碼; 第二選取子單元,用于當(dāng)?shù)谝贿x取子單元選取完成后,選取一個(gè)暴力密碼作為當(dāng)前字典密碼的當(dāng)前帶入密碼,其中當(dāng)前帶入`密碼有K段密碼段,I < K ; 帶入子單元,用于當(dāng)?shù)诙x取子單元選取完成后,用當(dāng)前帶入密碼依次替換不同位置的分隔符號(hào)同時(shí)將其它分隔符號(hào)刪除生成遍歷密碼碼,然后用當(dāng)前帶入密碼的第k段密碼段替換第η個(gè)分隔符號(hào),同時(shí)用從第k+Ι到第K段的密碼段組合依次替換第n+1到N個(gè)分隔符并將其它分隔符刪除生成遍歷密碼,其中KkSnSN; 第一判斷子單元,用于當(dāng)帶入子單元完成操作后,判斷η值是否已經(jīng)遍歷從I到N; 第二判斷子單元,用于當(dāng)?shù)谝慌袛嘧訂卧卸ńY(jié)果為是時(shí),判定當(dāng)前帶入密碼遍歷完畢,判斷是否還存在未作為當(dāng)前字典密碼的當(dāng)前帶入密碼,當(dāng)判定結(jié)果為是時(shí)通知第二選取子單元選取下一個(gè)當(dāng)前帶入密碼; 第三判斷子單元,用于當(dāng)?shù)诙袛嘧訂卧卸ńY(jié)果為否時(shí),判定當(dāng)前字典密碼遍歷完畢,判斷是否還存在未參與遍歷的字典密碼,當(dāng)判定結(jié)果為是時(shí)通知第一選取子單元選取下一組當(dāng)前字典密碼; 最終生成子單元,用于當(dāng)?shù)谌袛嘧訂卧卸ńY(jié)果為否時(shí)將帶入子單元生成的全部遍歷密碼生成最終的遍歷密碼。
8.根據(jù)權(quán)利要求7所述的一種基于字典的復(fù)雜密碼遍歷裝置,其特征在于,同一字典密碼中的不同密碼段的字符特征相同。
【文檔編號(hào)】H04L9/08GK103701590SQ201410007236
【公開(kāi)日】2014年4月2日 申請(qǐng)日期:2014年1月7日 優(yōu)先權(quán)日:2014年1月7日
【發(fā)明者】張光斌, 王海濱, 張永光, 湯偉賓 申請(qǐng)人:廈門(mén)市美亞柏科信息股份有限公司