密码遍历方法和装置的制造方法

文档序号:8397961阅读:603来源:国知局
密码遍历方法和装置的制造方法
【技术领域】
[0001]本发明涉及密码加解密技术领域,具体而言,特别涉及一种密码遍历方法和装置。
【背景技术】
[0002]暴力遍历方法和字典遍历方法是目前密码遍历方法中最常用的两种遍历方式。暴力遍历方法是指对用户制定的规则内的所有密码进行遍历,字典遍历方法则是指对字典中的密码进行遍历。暴力遍历方法往往需要较多的规则来覆盖尽可能大的密码空间以提高密码恢复的成功率,但密码空间太大将造成遍历时间倍增,甚至需要成百上千年的时间,使密码恢复失去意义。字典遍历方法的成功率往往受限于字典中的密码数,由于字典的密码数一般不会太多,因此可以短时间内完成密码的遍历,但一般只能恢复出常用的密码,对于一些复杂密码无能为力。
[0003]如何在有效的时间内恢复出尽可能复杂的密码是当前密码恢复的主要研宄方向。针对暴力遍历方法,主要研宄集中在通过各种硬件加速、算法优化、分布式技术来提高遍历的速度,以此来缩短遍历的时间。但是通过提高遍历速度的方法只能使遍历时间线性减小,而密码长度增长、用于进行密码遍历的字符集增大却使遍历时间几何级数增大。
[0004]目前,对于普通规则的暴力遍历方法,都是采用对字符集进行排列组合的方式来遍历密码。即给定字符集“0123456789”遍历6位密码,其遍历密码的顺序为“000000”-〉“000001”-〉…“899999”-〉“999999”,即首先遍历出密码 “000000”,最后遍历出密码“999999”。但发明人研宄发现,这些遍历密码作为密码的概率不是均等的,例如“999999”作为密码的概率远比“000001”作为密码的概率要高,因此,对于现有的暴力遍历方法,很多有效密码都可能在一些规则的尾部才被构造。其次,由于一些常用密码在现有的暴力遍历方法中,都是均匀分布在规则中,因而有些常用密码可能在最后才被遍历出来。
[0005]针对现有技术中进行排列组合的方式来遍历密码时,常用密码无法优先遍历到的问题,目前尚未提出有效的解决方法。

【发明内容】

[0006]本发明的主要目的在于提供一种密码遍历方法和装置,以解决现有技术中进行排列组合的方式来遍历密码时,常用密码无法优先遍历到的问题。
[0007]依据本发明的一个方面,提供了一种密码遍历方法。
[0008]该密码遍历方法包括:获取进行密码遍历的预设字符集;获取预设字符集对应的概率因子集和关联因子集,其中,概率因子集包括预设字符集中每一字符对应密码每位的概率因子,关联因子集包括预设字符集中任意两个字符的关联因子;以及根据概率因子集和关联因子集确定遍历密码。
[0009]进一步地,获取预设字符集对应的概率因子集和关联因子集具体为:根据社会工程学的研宄成果确定预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子;或者统计一个或多个密码字典得到预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子。
[0010]进一步地,根据概率因子集和关联因子集确定遍历密码包括:根据概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第一位的出现概率;确定预设字符集中在第一个遍历密码第一位的出现概率最大的字符为第一个遍历密码的第一位字符;在确定第一个遍历密码的第η-1位字符后,根据第η-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第η位的出现概率,η = 2,3,4...Ν,Ν为进行密码遍历的密码长度;确定预设字符集中在第一个遍历密码第η位的出现概率最大的字符为第一个遍历密码的第η位字符;将第一个遍历密码的每一位字符按位组合,以确定第一个遍历密码;以及在确定第j-ι个遍历密码后,根据第j-ι个遍历密码、概率因子集和关联因子集更新第j_l个遍历密码,以得到第j个遍历密码,其中,j = 2,3,4...J,J为进行密码遍历的密码个数。
[0011]进一步地,第一字符为预设字符集中任一字符,则计算第一字符在第一个遍历密码第一位的出现概率具体为:将第一字符对应密码第一位的概率因子作为第一字符在第一个遍历密码第一位的出现概率;或者采用以下公式计算第一字符在第一个遍历密码第一位的出现概率,
[0012]P1= a !XaJ^1Xb1,
[0013]其中,P1S第一字符在第一个遍历密码第一位的出现概率,α I为第一字符对应密码第一位的概率因子,β i为第一字符与预设字符集中各字符的关联因子,a jP b 预设的权重值,且^b1= 1
[0014]进一步地,第m字符为第j-Ι个遍历密码的第m位字符的下一个字符,第m字符为将预设字符集中各字符按照在j_l个遍历密码的第m位的出现概率由大到小排序后,与第m位字符相邻的下一个字符,第m字符对应的概率为第m字符在j-Ι个遍历密码的第m位的出现概率,m = I, 2,3,4…N ;第X字符为第j-Ι个遍历密码的第X位字符的下一个字符,第X字符对应的概率为第j-Ι个遍历密码的各位字符的下一个字符对应的概率中的最大概率。
[0015]在确定第j-Ι个遍历密码后,根据第j_l个遍历密码、概率因子集和关联因子集更新第j-Ι个遍历密码,以得到第j个遍历密码包括:将第j-ι个遍历密码的第一位字符至第X-1位字符依次作为第j个遍历密码的第一位字符至第X-1位字符;将第X字符作为第j个遍历密码的第X位字符;针对第j个遍历密码的第X+1位字符至第N位字符,在确定第j个遍历密码的第1-1位字符后,根据第1-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第j个遍历密码第I位的出现概率,I = x+1, X+2…N,N为进行密码遍历的密码长度;确定预设字符集中在第j个遍历密码第I位的出现概率最大的字符为第j个遍历密码的第I位字符;将第j个遍历密码的每一位字符按位组合,以确定第j个遍历密码。
[0016]进一步地,第二字符为预设字符集中任一字符,针对任一个遍历密码,在根据该遍历密码的第q_l位字符、概率因子集和关联因子集计算第二字符在该遍历密码第q位的出现概率时,采用以下公式计算:
_7] Pq= a qXaq+0qXbq,
[0018]其中,Ptl为第二字符在该遍历密码第q位的出现概率,α ^为第二字符对应密码第q位的概率因子,β ,为第二字符与该遍历密码的第q_l位字符的关联因子,a ,和b ,为预设的权重值,且ajbq= I,其中,该遍历密码为第一个遍历密码时,q = 2,3,4…N,该遍历密码为第j个遍历密码时,q = X+1, X+2…N。
[0019]进一步地,在得到第j个遍历密码后,该方法还包括:判断第j个遍历密码是否为有效密码;若第j个遍历密码为有效密码时,结束遍历;若第j个遍历密码不为有效密码时,计算已遍历的密码个数占预设字符集用于进行密码遍历时的密码空间的比例,以得到已遍历的密码的空间覆盖率;以及当空间覆盖率等于预设阈值时,结束遍历。
[0020]依据本发明的另一个方面,提供了一种密码遍历装置。
[0021]根据本发明的密码遍历装置包括:第一获取模块,用于获取进行密码遍历的预设字符集;第二获取模块,用于获取预设字符集对应的概率因子集和关联因子集,其中,概率因子集包括预设字符集中每一字符对应密码每位的概率因子,关联因子集包括预设字符集中任意两个字符的关联因子;以及确定模块,用于根据概率因子集和关联因子集确定遍历密码。
[0022]进一步地,第二获取模块具体执行以下步骤:根据社会工程学的研宄成果确定预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子;或者统计一个或多个密码字典得到预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子。
[0023]进一步地,确定模块包括:
[0024]第一遍历密码确定模块,用于执行以下步骤:根据概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第一位的出现概率;确定预设字符集中在第一个遍历密码第一位的出现概率最大的字符为第一个遍历密码的第一位字符;在确定第一个遍历密码的第η-1位字符后,根据第η-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第η位的出现概率,η = 2,3,4…N,N为进行密码遍历的密码长度;确定预设字符集中在第一个遍历密码第η位的出现概率最大的字符为第一个遍历密码的第η位字符;将第一个遍历密码的每一位字符按位组合,以确定第一个遍历密码;以及
[0025]第二遍历密码确定模块,用于执行以下步骤:在确定第j_l个遍历密码后,根据第j-Ι个遍历密码、概率因子集和关联因子集更新第j-Ι个遍历密码,以得到第j个遍历密码,其中,j = 2,3,4…J,J为进行密码遍历的密码个数。
[0026]进一步地,第一字符为预设字符集中任一字符,则第一遍历密码确定模块在计算第一字符在第一个遍历密码第一位的出现概率时,具体执行以下步骤:将第一字符对应密码第一位的概率因子作为第一字符在第一个遍历密码第一位的出现概率;或者采用以下公式计算第一字符在第一个遍历密码第一位的出现概率,
[0027]P1= a !XaJ^1Xb1,
[0028]其中,P1S第一字符在第一个遍历密码第一位的出现概率,α I为第一字符对应密码第一位的概率因子,β i为第一字符与预设字符集中各字符的关联因子,a jP b 预设的权重值,且^b1= 1
[0029]进一步地,第m字符为第j_l个遍历密码的第m位字符的下一个字符,第m字符为将预设字符集中各字符按照在j_l个遍历密码的第m位的出现概率由大到小排序后,与第m位字符相邻的下一个字符,第m字符对应的概率为第m字符在j-Ι个遍历密码的第m位的出现概率,m = I, 2,3,4…N ;第X字符为第j-Ι个遍历密码的第X位字符的下一个字符,第X字符对应的概率为第j-ι个遍历密码的各位字符的下一个字符对应的概率中的最大概率。
[0030]第二遍历密码确定模块用于执行以下步骤:将第j-Ι个遍历密码的第一位字符至第X-1位字符依次作为第j个遍历密码的第一位字符至第X-1位字符;将第X字符作为第j个遍历密码的第X位字符;针对第j个遍历密码的第x+1位字符至第N位字符,在确定第j个遍历密码的第1-1位字符后,根据第1-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第j个遍历密码第I位的出现概率,I = x+1, x+2…N,N为进行密码遍历的密码长度;确定预设字符集中在第j个遍历密码第I位的出现概率最大的字符为第j个遍历密码的第I位字符;将第j个遍历密码的每一位字符按位组合,以确定第j个遍历密码。
[0031]进一步地,第二字符为预设字符集中任一字符,针对任一个遍历密码,第二遍历密码确定模块在根据该遍历密码的第q_l位字符、概率因子集和关联因子集计算第二字符在该遍历密码第q位的出现概率时,采用以下公式计算:
[0032]Pq= a qXaq+0 qXbq,
[0033]其中,Ptl为第二字符在该遍历密码第q位的出现概率,α ^为第二字符对应密码第q位的概率因子,β ,为第二字符与该遍历密码的第q_l位字符的关联因子,a ,和b ,为预设的权重值,且a^+b,= 1,其中,q = Χ+1,Χ+2…N。
[0034]第二字符为预设字符集中任
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1