CN104717058B - 密码遍历方法和装置 - Google Patents
密码遍历方法和装置 Download PDFInfo
- Publication number
- CN104717058B CN104717058B CN201510069374.3A CN201510069374A CN104717058B CN 104717058 B CN104717058 B CN 104717058B CN 201510069374 A CN201510069374 A CN 201510069374A CN 104717058 B CN104717058 B CN 104717058B
- Authority
- CN
- China
- Prior art keywords
- character
- password
- traversal
- bit
- probability
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000004364 calculation method Methods 0.000 claims description 22
- 238000011160 research Methods 0.000 claims description 12
- 239000012141 concentrate Substances 0.000 abstract 2
- 238000011084 recovery Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Telephone Function (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种密码遍历方法和装置。该方法包括:获取进行密码遍历的预设字符集;获取预设字符集对应的概率因子集和关联因子集,其中,概率因子集包括预设字符集中每一字符对应密码每位的概率因子,关联因子集包括预设字符集中任意两个字符的关联因子;以及根据概率因子集和关联因子集确定遍历密码。通过本发明,能够将常用密码优先遍历到。
Description
技术领域
本发明涉及密码加解密技术领域,具体而言,特别涉及一种密码遍历方法和装置。
背景技术
暴力遍历方法和字典遍历方法是目前密码遍历方法中最常用的两种遍历方式。暴力遍历方法是指对用户制定的规则内的所有密码进行遍历,字典遍历方法则是指对字典中的密码进行遍历。暴力遍历方法往往需要较多的规则来覆盖尽可能大的密码空间以提高密码恢复的成功率,但密码空间太大将造成遍历时间倍增,甚至需要成百上千年的时间,使密码恢复失去意义。字典遍历方法的成功率往往受限于字典中的密码数,由于字典的密码数一般不会太多,因此可以短时间内完成密码的遍历,但一般只能恢复出常用的密码,对于一些复杂密码无能为力。
如何在有效的时间内恢复出尽可能复杂的密码是当前密码恢复的主要研究方向。针对暴力遍历方法,主要研究集中在通过各种硬件加速、算法优化、分布式技术来提高遍历的速度,以此来缩短遍历的时间。但是通过提高遍历速度的方法只能使遍历时间线性减小,而密码长度增长、用于进行密码遍历的字符集增大却使遍历时间几何级数增大。
目前,对于普通规则的暴力遍历方法,都是采用对字符集进行排列组合的方式来遍历密码。即给定字符集“0123456789”遍历6位密码,其遍历密码的顺序为“000000”->“000001”->…->->“899999”->“999999”,即首先遍历出密码“000000”,最后遍历出密码“999999”。但发明人研究发现,这些遍历密码作为密码的概率不是均等的,例如“999999”作为密码的概率远比“000001”作为密码的概率要高,因此,对于现有的暴力遍历方法,很多有效密码都可能在一些规则的尾部才被构造。其次,由于一些常用密码在现有的暴力遍历方法中,都 是均匀分布在规则中,因而有些常用密码可能在最后才被遍历出来。
针对现有技术中进行排列组合的方式来遍历密码时,常用密码无法优先遍历到的问题,目前尚未提出有效的解决方法。
发明内容
本发明的主要目的在于提供一种密码遍历方法和装置,以解决现有技术中进行排列组合的方式来遍历密码时,常用密码无法优先遍历到的问题。
依据本发明的一个方面,提供了一种密码遍历方法。
该密码遍历方法包括:获取进行密码遍历的预设字符集;获取预设字符集对应的概率因子集和关联因子集,其中,概率因子集包括预设字符集中每一字符对应密码每位的概率因子,关联因子集包括预设字符集中任意两个字符的关联因子;以及根据概率因子集和关联因子集确定遍历密码。
进一步地,获取预设字符集对应的概率因子集和关联因子集具体为:根据社会工程学的研究成果确定预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子;或者统计一个或多个密码字典得到预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子。
进一步地,根据概率因子集和关联因子集确定遍历密码包括:根据概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第一位的出现概率;确定预设字符集中在第一个遍历密码第一位的出现概率最大的字符为第一个遍历密码的第一位字符;在确定第一个遍历密码的第n-1位字符后,根据第n-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第n位的出现概率,n=2,3,4…N,N为进行密码遍历的密码长度;确定预设字符集中在第一个遍历密码第n位的出现概率最大的字符为第一个遍历密码的第n位字符;将第一个遍历密码的每一位字符按位组合,以确定第一个遍历密码;以及在确定第j-1个遍历密码后,根据第j-1个遍历密码、概率因子集和关联因子集更新第j-1个遍历密码,以得到 第j个遍历密码,其中,j=2,3,4…J,J为进行密码遍历的密码个数。
进一步地,第一字符为预设字符集中任一字符,则计算第一字符在第一个遍历密码第一位的出现概率具体为:将第一字符对应密码第一位的概率因子作为第一字符在第一个遍历密码第一位的出现概率;或者采用以下公式计算第一字符在第一个遍历密码第一位的出现概率,
P1=α1×a1+β1×b1,
其中,P1为第一字符在第一个遍历密码第一位的出现概率,α1为第一字符对应密码第一位的概率因子,β1为第一字符与预设字符集中各字符的关联因子,a1和b1为预设的权重值,且a1+b1=1。
进一步地,第m字符为第j-1个遍历密码的第m位字符的下一个字符,第m字符为将预设字符集中各字符按照在j-1个遍历密码的第m位的出现概率由大到小排序后,与第m位字符相邻的下一个字符,第m字符对应的概率为第m字符在j-1个遍历密码的第m位下一个字符的出现概率,m=1,2,3,4…N;第X字符为第j-1个遍历密码的第X位字符的下一个字符,第X字符对应的概率为第j-1个遍历密码的第X位字符的下一个字符对应的概率中的最大概率。
在确定第j-1个遍历密码后,根据第j-1个遍历密码、概率因子集和关联因子集更新第j-1个遍历密码,以得到第j个遍历密码包括:将第j-1个遍历密码的第一位字符至第X-1位字符依次作为第j个遍历密码的第一位字符至第X-1位字符;将第X字符作为第j个遍历密码的第X位字符;针对第j个遍历密码的第X+1位字符至第N位字符,在确定第j个遍历密码的第l-1位字符后,根据第l-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第j个遍历密码第l位的出现概率,l=X+1,X+2…N,N为进行密码遍历的密码长度;确定预设字符集中在第j个遍历密码第l位的出现概率最大的字符为第j个遍历密码的第l位字符;将第j个遍历密码的每一位字符按位组合,以确定第j个遍历密码。
进一步地,第二字符为预设字符集中任一字符,针对任一个遍历密码,在根据该遍历密码的第q-1位字符、概率因子集和关联因子集 计算第二字符在该遍历密码第q位的出现概率时,采用以下公式计算:
Pq=αq×aq+βq×bq,
其中,Pq为第二字符在该遍历密码第q位的出现概率,αq为第二字符对应密码第q位的概率因子,βq为第二字符与该遍历密码的第q-1位字符的关联因子,aq和bq为预设的权重值,且aq+bq=1,其中,该遍历密码为第一个遍历密码时,q=2,3,4…N,该遍历密码为第j个遍历密码时,q=X+1,X+2…N。
进一步地,在得到第j个遍历密码后,该方法还包括:判断第j个遍历密码是否为有效密码;若第j个遍历密码为有效密码时,结束遍历;若第j个遍历密码不为有效密码时,计算已遍历的密码个数占预设字符集用于进行密码遍历时的密码空间的比例,以得到已遍历的密码的空间覆盖率;以及当空间覆盖率等于预设阈值时,结束遍历。
依据本发明的另一个方面,提供了一种密码遍历装置。
根据本发明的密码遍历装置包括:第一获取模块,用于获取进行密码遍历的预设字符集;第二获取模块,用于获取预设字符集对应的概率因子集和关联因子集,其中,概率因子集包括预设字符集中每一字符对应密码每位的概率因子,关联因子集包括预设字符集中任意两个字符的关联因子;以及确定模块,用于根据概率因子集和关联因子集确定遍历密码。
进一步地,第二获取模块具体执行以下步骤:根据社会工程学的研究成果确定预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子;或者统计一个或多个密码字典得到预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子。
进一步地,确定模块包括:
第一遍历密码确定模块,用于执行以下步骤:根据概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第一位的出现概率;确定预设字符集中在第一个遍历密码第一位的出现概率最大的字符为第一个遍历密码的第一位字符;在确定第一个遍历密码的第 n-1位字符后,根据第n-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第n位的出现概率,n=2,3,4…N,N为进行密码遍历的密码长度;确定预设字符集中在第一个遍历密码第n位的出现概率最大的字符为第一个遍历密码的第n位字符;将第一个遍历密码的每一位字符按位组合,以确定第一个遍历密码;以及
第二遍历密码确定模块,用于执行以下步骤:在确定第j-1个遍历密码后,根据第j-1个遍历密码、概率因子集和关联因子集更新第j-1个遍历密码,以得到第j个遍历密码,其中,j=2,3,4…J,J为进行密码遍历的密码个数。
进一步地,第一字符为预设字符集中任一字符,则第一遍历密码确定模块在计算第一字符在第一个遍历密码第一位的出现概率时,具体执行以下步骤:将第一字符对应密码第一位的概率因子作为第一字符在第一个遍历密码第一位的出现概率;或者采用以下公式计算第一字符在第一个遍历密码第一位的出现概率,
P1=α1×a1+β1×b1,
其中,P1为第一字符在第一个遍历密码第一位的出现概率,α1为第一字符对应密码第一位的概率因子,β1为第一字符与预设字符集中各字符的关联因子,a1和b1为预设的权重值,且a1+b1=1。
进一步地,第m字符为第j-1个遍历密码的第m位字符的下一个字符,第m字符为将预设字符集中各字符按照在j-1个遍历密码的第m位的出现概率由大到小排序后,与第m位字符相邻的下一个字符,第m字符对应的概率为第m字符在j-1个遍历密码的第m位下一个字符的出现概率,m=1,2,3,4…N;第X字符为第j-1个遍历密码的第X位字符的下一个字符,第X字符对应的概率为第j-1个遍历密码的第X位字符的下一个字符对应的概率中的最大概率。
第二遍历密码确定模块用于执行以下步骤:将第j-1个遍历密码的第一位字符至第X-1位字符依次作为第j个遍历密码的第一位字符至第X-1位字符;将第X字符作为第j个遍历密码的第X位字符;针对第j个遍历密码的第X+1位字符至第N位字符,在确定第j个遍历密码的第l-1位字符后,根据第l-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第j个遍历密码第l位的出现概率,l=X+1,X+2…N,N为进行密码遍历的密码长度;确定预设字符集中在第j个遍历密码第l位的出现概率最大的字符为第j个遍历密码的第l位字符;将第j个遍历密码的每一位字符按位组合,以确定第j个遍历密码。
进一步地,第二字符为预设字符集中任一字符,针对任一个遍历密码,第二遍历密码确定模块在根据该遍历密码的第q-1位字符、概率因子集和关联因子集计算第二字符在该遍历密码第q位的出现概率时,采用以下公式计算:
Pq=αq×aq+βq×bq,
其中,Pq为第二字符在该遍历密码第q位的出现概率,αq为第二字符对应密码第q位的概率因子,βq为第二字符与该遍历密码的第q-1位字符的关联因子,aq和bq为预设的权重值,且aq+bq=1,其中,q=X+1,X+2…N。
第二字符为预设字符集中任一字符,针对第一个遍历密码,第一遍历密码确定模块在根据该遍历密码的第q-1位字符、概率因子集和关联因子集计算第二字符在该遍历密码第q位的出现概率时,采用以下公式计算:
Pq=αq×aq+βq×bq,
其中,Pq为第二字符在该遍历密码第q位的出现概率,αq为第二字符对应密码第q位的概率因子,βq为第二字符与该遍历密码的第q-1位字符的关联因子,aq和bq为预设的权重值,且aq+bq=1,其中,q=2,3,4…N。
进一步地,该装置还包括结束遍历模块,用于执行以下步骤:判断第j个遍历密码是否为有效密码;若第j个遍历密码为有效密码时,结束遍历;若第j个遍历密码不为有效密码时,计算已遍历的密码个数占预设字符集用于进行密码遍历时的密码空间的比例,以得到已遍历的密码的空间覆盖率;以及当空间覆盖率等于预设阈值时,结束遍历。
通过本发明,在对一个预设字符集进行密码遍历确定一个遍历密码时,获取预设字符集对应的概率因子集和关联因子集,其中,概率因子集包括预设字符集中每一字符对应密码每位的概率因子,关联因子集包括预设字符集中任意两个字符的关联因子,然后根据概率因子集和关联因子集确定遍历密码,由于将字符在密码位上的出现概率和各字符间的关联关系作为影响该遍历密码出现顺序的因素,因而能够将常用密码优先遍历到。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明实施例1的密码遍历方法的流程图;
图2是根据本发明实施例2的密码遍历方法的流程图;
图3是根据本发明实施例3的密码遍历方法的流程图;
图4是根据本发明实施例4的密码遍历方法的流程图;
图5是根据本发明实施例7的密码遍历装置的框图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步说明。需要指出的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
为方便对本申请的理解,首先,对本申请实施例中涉及的参数予以说明:
(1)概率因子α:字符集中的每一个字符在密码每一位上都对应一个出现的概率,将该概率定义为概率因子,一个字符在密码某一 位上对应的概率因子越大,该字符在密码该位上的出现概率越大,其值为0-1的小数。
(2)关联因子β:指字符集中一个字符与另一字符的关联程度,也可表示一个字符与另一字符相组合的概率大小,对于已确定某位字符的密码,与该位字符关联因子越大的字符,在该密码的这一位字符的相邻位上出现概率越大,其值为0-1的小数。
(3)空间覆盖率γ:指遍历密码数量的比例。具体为:针对一个字符集时,该字符集用于进行密码遍历时,遍历到的所有密码的个数构成该字符集用于进行该密码遍历时的密码空间,而空间覆盖率即为已遍历的密码个数占密码空间的比例。
以下,将对本申请提供的各个实施例进行详细的描述。
实施例1
如图1所示,该实施例提供了一种密码遍历方法,该方法包括如下的步骤S302至步骤S306。
步骤S302:获取进行密码遍历的预设字符集。
在进行密码遍历时,需要采用字符集中的字符构造遍历密码的每一位字符,因而,在密码遍历初始,首先执行该步骤S302,以获取一个预设字符集,例如获取到的预设字符集为由0—9共十个数字、a—z共26个小写字母组成的一个字符集。
步骤S304:获取预设字符集对应的概率因子集和关联因子集。
其中,概率因子集包括预设字符集中每一字符对应密码每位的概率因子α,具体如上文定义。关联因子集包括预设字符集中任意两个字符的关联因子β,具体如上文定义。
在该步骤中,可根据社会工程学的研究成果确定预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子;或者统计一个或多个密码字典得到预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子。
步骤S306:根据概率因子集和关联因子集确定遍历密码。
与现有技术中采用对字符集中字符进行排列组合的方式来遍历密码相比,根据概率因子集和关联因子集确定一个遍历密码时,由于 将字符在密码位上的出现概率和各字符间的关联关系作为影响该遍历密码出现顺序的因素,因而能够将常用密码优先遍历到。
实施例2
如图2所示,该实施例提供一种更优选的密码遍历方法,该方法包括如下的步骤S102至步骤S112。
步骤S102:获取进行密码遍历的预设字符集。
在进行密码遍历时,都是采用字符集中的字符构造遍历密码的每一位字符,因而,在密码遍历初始,首先获取一个字符集,例如获取到的预设字符集为由0—9共十个数字、a—z共26个小写字母组成的一个字符集。
步骤S104:获取预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子。
例如,根据社会工程学的研究成果可确定任意一个已存在字符对应密码每一位的概率因子,并将确定的概率因子生成一个概率因子表,在该步骤中,将概率因子表中非预设字符集中的字符对应的概率因子删除,删除后的概率因子表中仅包括预设字符集中的各字符对应密码每一位的概率因子。
同理,根据社会工程学的研究成果可确定任意两个已存在字符的关联因子,并将确定的关联因子生成一个关联因子表,在该步骤中,将关联因子表中涉及非预设字符集中的字符的关联因子删除,删除后的关联因子表中仅包括预设字符集中任意两个字符的关联因子。
又如,统计一个或多个常用的密码字典,以得到预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子。
步骤S106:针对预设字符集中的任意一个字符,根据字符对应密码第一位的概率因子计算字符在密码第一位的出现概率,以得到预设字符集中各字符在密码第一位的出现概率。
在确定密码的第一位字符时,由于密码的第一位字符不需要与其他字符关联,因而字符在密码第一位的出现概率可与关联因子无关,仅与该字符对应密码第一位的概率因子有关,从而在计算预设字符集 中的任意一个字符在密码第一位的出现概率时,仅分别根据每个字符对应密码第一位的概率因子即可计算得到。
优选地,直接将字符对应密码第一位的概率因子作为字符在密码第一位的出现概率,处理方法简单,并且由于字符对应密码第一位的概率因子越大,该字符在密码第一位的出现概率越大,在进行密码遍历时,将对应密码第一位的较大的概率因子对应的字符优先构造为遍历密码的第一位字符,能够将出现概率高的遍历密码优先遍历到。
步骤S108:根据预设字符集中各字符在密码第一位的出现概率确定一个遍历密码的第一位字符。
例如,按照各字符在密码第一位的出现概率将预设字符集中的所有字符由大到小进行排序,出现概率最大的字符为第一个字符,出现概率最小的字符为最后一个字符。在确定第一个遍历密码时,将第一个字符作为该第一个遍历密码的第一位字符;在确定第二个遍历密码时,将第二个字符作为该第二个遍历密码的第一位字符,依次类推。
步骤S110:在确定遍历密码的第n-1位字符后,针对预设字符集中的任意一个字符,根据字符对应密码第n位的概率因子、字符与遍历密码的第n-1位字符的关联因子计算字符在遍历密码的第n位的出现概率,以得到预设字符集中各字符在遍历密码第n位的出现概率,n为大于1且不大于密码长度的自然数。
在确定遍历密码除第一位字符之外的第n位字符时,由于该第n位字符与已确定的第n-1位字符有关,因而一个字符在密码第n位的出现概率与该字符对应密码第n位的概率因子和该字符与已确定的第n-1位字符的关联因子有关,从而在计算预设字符集中的一个字符在密码第n位的出现概率时,根据该字符对应密码第n位的概率因子、该字符与已确定的第n-1位字符的关联因子即可计算得到。
优选地采用以下公式计算字符在遍历密码的第n位的出现概率:
P=α×a+β×b
其中,P为字符在遍历密码的第n位的出现概率,α为字符对应密码第n位的概率因子,β为字符与第n-1位字符的关联因子,a和b为预设的权重值,且a+b=1。
其中,权重值a和b可以根据实际需要调整,优选将概率因子a的权重设为0.6,关联因子b的权重设为0.4。
步骤S112:根据预设字符集中各字符在遍历密码第n位的出现概率确定遍历密码的第n位字符。
例如,对于已确定第一位字符的遍历密码,通过步骤S110可计算出预设字符集中各字符在密码第二位的出现概率,在该步骤S112中,将各字符在密码第二位的出现概率中最大出现概率对应的字符确定为该遍历密码的第二位字符;对于该遍历密码,在确定第二位字符之后,通过步骤S110可计算出预设字符集中各字符在密码第三位的出现概率,在该步骤S112中,将各字符在密码第三位的出现概率中最大出现概率对应的字符确定为该遍历密码的第三位字符。以此类推,直到该遍历密码的所有位字符都被确定,完成一个密码的遍历,得到一个遍历密码。
由此,每确定一个遍历密码的第一位字符之后,按照上述过程,均可依次确定遍历密码的每一位字符,从而确定一个遍历密码。
采用该实施例提供的密码遍历方法,在对一个预设字符集进行密码遍历确定一个遍历密码时,根据预设字符集中各字符在遍历密码每一位的出现概率确定该遍历密码每一位上的字符,由于在确定一个遍历密码的任一位字符时,均考虑了该字符在该遍历密码相应位上的出现概率,从而能够将出现概率高的遍历密码优先遍历到,也即优先找到有效密码,避免遍历出大量无效的密码,提高密码遍历方法效率。
实施例3
如图3所示,该实施例提供一种更优选的密码遍历方法,该方法包括如下的步骤S202至步骤S218。
步骤S202:获取进行密码遍历的预设字符集。
步骤S204:获取预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子。
步骤S206:开始密码遍历,以得到遍历的第一个密码。
具体地,该步骤S206可包括以下的步骤:
a:针对预设字符集中的任意一个字符,根据字符对应密码第一 位的概率因子计算字符在密码第一位的出现概率,以得到预设字符集中各字符在密码第一位的出现概率;
b:将预设字符集中在密码第一位的出现概率最大的字符作为第一个密码的第一位字符;
c:针对预设字符集中的任意一个字符,根据字符对应密码第n位的概率因子、该字符与第一个密码的第n-1位字符的关联因子计算字符在第一个密码的第n位的出现概率,以得到预设字符集中各字符在第一个密码的第n位的出现概率,并将预设字符集中在第一个密码的第n位的出现概率最大的字符作为第一个密码的第n位字符。
其中,n为大于1小于密码长度的自然数。在采用c计算并得到第一个密码的每一位字符后,也即得到了第一个遍历密码。
步骤S208:继续遍历得到遍历的第j个密码。
其中,j为大于1且不大于预设字符集用于进行密码遍历时的密码空间。具体地,该步骤S208可包括以下的步骤:
a1:获取第j-1个密码的第一位字符和第二位字符;
b1:确定第j-1个密码的第一位字符的下一个字符,以得到第一字符,其中,第一字符为将预设字符集中的字符按照在j-1个密码第一位的出现概率由大到小排序后,与第j-1个密码的第一位字符相邻的下一个字符,第一字符在j-1个密码第一位的出现概率为第一概率;
c1:确定第j-1个密码的第二位字符的下一个字符,以得到第二字符,其中,第二字符为将预设字符集中的字符按照在j-1个密码第二位的出现概率由大到小排序后,与第j-1个密码的第二位字符相邻的下一个字符,第二字符在j-1个密码第二位的出现概率为第二概率;
步骤d1:比较第一概率与第二概率的大小;
步骤e1:若第一概率大于第二概率,将第一字符作为第j个密码的第一位字符,并进一步确定第j个密码的其他位字符,以得到第j个密码。
具体地,在确定第j个密码的第一位字符后,通过步骤S110可 计算出预设字符集中各字符在第j个密码第二位的出现概率,通过步骤S112,将各字符在第j个密码第二位的出现概率中最大出现概率对应的字符确定为该第j个密码的第二位字符;对于该第j个密码,在确定第二位字符之后,通过步骤S110可计算出预设字符集中各字符在第j个密码第三位的出现概率,通过步骤S112,将各字符在第j个密码第三位的出现概率中最大出现概率对应的字符确定为该第j个密码的第三位字符。以此类推,直到该第j个密码的所有位字符都被确定,完成一个密码的遍历,得到一个遍历密码,也即第j个密码。
f1:若第一概率小于第二概率,将第j-1个密码的第一位字符作为第j个密码的第一位字符,将第二字符作为第j个密码的第二位字符,并进一步确定第j个密码的其他位字符,以得到第j个密码。
具体地,在确定第j个密码的第一位字符和第二位字符后,通过步骤S110可计算出预设字符集中各字符在第j个密码第三位的出现概率,通过步骤S112,将各字符在第j个密码第三位的出现概率中最大出现概率对应的字符确定为该第j个密码的第三位字符;对于该第j个密码,在确定第三位字符之后,通过步骤S110可计算出预设字符集中各字符在第j个密码第四位的出现概率,通过步骤S112,将各字符在第j个密码第四位的出现概率中最大出现概率对应的字符确定为该第j个密码的第四位字符。以此类推,直到该第j个密码的所有位字符都被确定,完成一个密码的遍历,得到一个遍历密码,也即第j个密码。
步骤S210:判断第j个密码是否为有效密码。
步骤S212:若第j个密码为有效密码时,结束遍历。
步骤S214:若遍历密码不为有效密码时,计算已遍历的密码个数占预设字符集用于进行密码遍历时的密码空间的比例,以得到密码遍历的空间覆盖率。
步骤S216:当空间覆盖率小于预设阈值时,j=j+1,返回步骤S208。
步骤S218:当空间覆盖率等于预设阈值时,结束遍历。
采用该优选实施例提供的密码遍历方法,在确定一个遍历密码的 第一位字符时,参照前一个已确定的遍历密码来确定,从而能够简单快速的优先找到有效密码,进一步提高密码遍历方法效率。同时,可根据实际使用需求设定空间覆盖率的阈值,例如意在较短时间内完成密码遍历,则可以降低空间覆盖率的阈值,意在尽可能提高成功率,则提高空间覆盖率的阈值。
实施例4
如图4所示,该实施例提供一种更优选的密码遍历方法,该方法包括如下的步骤S402至步骤S408。
步骤S402:获取进行密码遍历的预设字符集。
步骤S404:获取预设字符集对应的概率因子集和关联因子集。
步骤S406:开始密码遍历,以得到遍历的第一个密码。
具体地,该步骤S406可包括以下的步骤:
a2:根据概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第一位的出现概率。
具体地,以预设字符集中任一字符,也即X字符为例,计算X字符在第一个遍历密码第一位的出现概率可采用以下的两种计算方式:
第一种,将X字符对应密码第一位的概率因子作为X字符在第一个遍历密码第一位的出现概率。通过该种计算方法,对于X字符,可得到一个出现概率。
第二种,采用以下公式计算X字符在第一个遍历密码第一位的出现概率,
P1=α1×a1+β1×b1,
其中,P1为X字符在第一个遍历密码第一位的出现概率,α1为X字符对应密码第一位的概率因子,β1为X字符与预设字符集中各字符的关联因子,a1和b1为预设的权重值,且a1+b1=1。通过该种计算方法,对于X字符,β1取X字符与预设字符集中不同字符的关联因子时,均可得到一个出现概率,因而,对于X字符,如果预设字符集中有M个字符,则该计算方法可得到M个出现概率。
b2:确定预设字符集中在第一个遍历密码第一位的出现概率最大的字符为第一个遍历密码的第一位字符。
无论采用上述哪一种计算方法,取计算得到的所有出现概率的最大值,将该最大值对应的字符作为第一个遍历密码的第一位字符。
c2:在确定第一个遍历密码的第n-1位字符后,根据第n-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第n位的出现概率,n=2,3,4…N,N为进行密码遍历的密码长度。
具体地,以预设字符集中任一字符,也即X字符为例,在确定第一个遍历密码的第n-1位字符后,计算X字符在第一个遍历密码第n位的出现概率可采用以下的计算方式:
Pn=αn×an+βn×bn,
其中,Pn为X字符在该第一个遍历密码第n位的出现概率,αn为X字符对应密码第n位的概率因子,βn为X字符与第一个遍历密码的第n-1位字符的关联因子,an和bn为预设的权重值,且an+bn=1。
通过该种计算方法,对于X字符,可得到一个出现概率,因而,预设字符集中的每个字符均可得到在该第一个遍历密码第n位的一个出现概率。
d2:确定预设字符集中在第一个遍历密码第n位的出现概率最大的字符为第一个遍历密码的第n位字符。
在该中,取计算得到的所有出现概率的最大值,将该最大值对应的字符作为第一个遍历密码的第n位字符。
e2:将第一个遍历密码的每一位字符按位组合,以确定第一个遍历密码。
在确定第一个遍历密码的第一位字符后,按照上述c2和d2确定第二位字符,再按照上述c2和d2确定第三位字符依次类推,直到确定第一个遍历密码每一位上的字符,最终在e2中,将每一位字符按位组合即可得到第一个遍历密码。
步骤S408:继续遍历得到第j个遍历密码。
具体地,在确定第一个遍历密码后,根据第一个遍历密码、概率因子集和关联因子集更新第一个遍历密码,以得到第二个遍历密码;在确定第二个遍历密码后,根据第二个遍历密码、概率因子集和关联因子集更新第二个遍历密码,以得到第三个遍历密码,依次类推,也 即在确定第j-1个遍历密码后,根据第j-1个遍历密码、概率因子集和关联因子集更新第j-1个遍历密码,以得到第j个遍历密码,其中,j=2,3,4…J,J为进行密码遍历的密码个数。
具体地,在实现该步骤S408时,首先进行如下的定义:第j-1个遍历密码的每一位字符均存在一个下一个字符,例如设第m字符为第j-1个遍历密码的第m位字符的下一个字符,第m字符具体定义是将预设字符集中各字符按照在j-1个遍历密码的第m位的出现概率由大到小排序后,与第m位字符相邻的下一个字符。m=1,2,3,4…N。
若定义第m字符对应的概率为第m字符在j-1个遍历密码的第m位下一个字符的出现概率,则特殊地,第X字符为第j-1个遍历密码的第X位字符的下一个字符,且该第X字符对应的概率为第j-1个遍历密码的第X位字符的下一个字符对应的概率中的最大概率。
在上述定义第m字符和第X字符的基础上,步骤S408包括以下的步骤:
a3:将第j-1个遍历密码的第一位字符至第X-1位字符依次作为第j个遍历密码的第一位字符至第X-1位字符,第j个遍历密码的前X-1位字符与第j-1个遍历密码的前X-1位字符分别对应相同。
b3:将第X字符作为第j个遍历密码的第X位字符。
c3:针对第j个遍历密码的第X+1位字符至第N位字符,在确定第j个遍历密码的第l-1位字符后,根据第l-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第j个遍历密码第l位的出现概率,l=X+1,X+2…N,N为进行密码遍历的密码长度。
具体地,以预设字符集中任一字符,也即X字符为例,在确定第j个遍历密码的第l-1位字符后,计算X字符在第j个遍历密码第l位的出现概率可采用以下的计算方式:
Pl=αl×al+βl×bl,
其中,Pl为X字符在该第j个遍历密码第l位的出现概率,αl为X字符对应密码第l位的概率因子,βl为X字符与第j个遍历密码的第l-1位字符的关联因子,αl和βl为预设的权重值,且al+bl=1。
通过该种计算方法,对于X字符,可得到一个出现概率,因而, 预设字符集中的每个字符均可得到在第j个遍历密码第l位的一个出现概率。
d3:确定预设字符集中在第j个遍历密码第l位的出现概率最大的字符为第j个遍历密码的第l位字符。
在该中,取计算得到的所有出现概率的最大值,将该最大值对应的字符作为第j个遍历密码的第l位字符。
e3:将第j个遍历密码的每一位字符按位组合,以确定第j个遍历密码。
根据a3和b3可确定第j个遍历密码的前X位字符,在确定第j个遍历密码的第X位字符后,按照上述c3和d3确定第j个遍历密码的第X+1位字符,再按照上述c3和d3确定第j个遍历密码的第X+2位字符,依次类推,直到确定第j个遍历密码的第X+1位字符至第N位字符,至此确定了第j个遍历密码的每一位字符,最终在e3中,将每一位字符按位组合即可得到第j个遍历密码。
实施例5
该实施例5提供一种更优选的密码遍历方法,在该实施例中,有效密码的密码位数为6到16位,预设的字符集由0到9共10个数字、a到z共26个小写字母、A到Z该共26个大写字母组成,该实施例的方法包括如下的步骤。
步骤1:遍历初始化。
在初始化过程中,获取概率因子表、关联因子表和预设的字符集,将密码长度初始化为6,确定空间覆盖率的阈值。
其中,概率因子表中包括多个字符对应密码第一位至第十六位的概率因子,也即,每个字符对应密码第一位至第十六位具有16个概率因子。关联因子表中包括多个字符中任意两个字符的关联因子。预设的字符集即为由0到9共10个数字、a到z共26个小写字母、A到Z该共26个大写字母组成的字符集。空间覆盖率的阈值为一个预设的百分比,例如40%。
步骤2:根据所选的字符集,对概率因子表和关联因子表进行裁减,将这两个表中非字符集中字符对应的因子删除。
步骤3:首先构造密码的第一位字符。由于第一位字符不需要与其它字符关联,因此从概率因子表中取最大概率因子对应的字符,代入第一位;
步骤4:构造密码的第二位字符。对于字符集中的每个字符,从概率因子表中取出该字符的概率因子α,从关联因子表中取出该字符与步骤3中已构造出的第一位字符的关联因子β,计算α×0.6+β×0.4,从而得到字符集中每个字符对应的计算结果,然后将所有计算结果中最大计算结果对应的字符代入第二位;
步骤5:然后采用步骤4的方法,构造第三位字符、第四位字符......,依此类推,直到完成密码所有位的填充,此时完成一个密码的构造;
步骤6:将已构造出的密码的第二位字符的下一个字符的α×0.6+β×0.4值(也即实施例2中的第二概率)与第一位字符的下一个字符的α(也即实施例2中的第一概率)比较,如果第一位字符的下一个字符的α(也即第一概率)大,则更新该已构造出的密码的第一位的字符,更新后的第一位的字符为上述第一位字符的下一个字符,如果下一个字符的α×0.6+β×0.4大,则保留该已构造出的密码的第一位字符,更新该已构造出的密码的第二位的字符,更新后的第二位的字符为上述的第二位字符的下一个字符;
步骤7:按照步骤4-5的方法,步骤6后剩下的其他所有位的字符的确定,构造出下一个密码;
步骤8:重复步骤6-7,直到构造的密码数与完整的密码空间之比达到指定的空间覆盖率阈值,完成一次密码遍历,并且将密码长度加1,再进行一次变化密码长度后的密码遍历。
采用该实施例提供的密码遍历方法的实施例,基于社会工程学的研究成果,运用了密码字符的分布统计规律,可以将常用的密码优先构造出来,大部分无效的密码则位于遍历的后部,与现有技术相比,可以在更短时间内找到有效密码。同时,引入空间覆盖率,在极大缩小密码空间的同时不会对成功率造成大的影响。
实施例6
该实施例6提供一种更优选的密码遍历方法,在该实施例中,有效密码的密码位数为6到16位,预设的字符集由0到9共10个数字、a到z共26个小写字母、A到Z该共26个大写字母组成,该实施例的方法包括如下的步骤。
步骤1:遍历初始化。
在初始化过程中,获取概率因子表、关联因子表和预设的字符集,将密码长度初始化为1,确定空间覆盖率的阈值。
其中,概率因子表中包括多个字符对应密码第一位至第十六位的概率因子,也即,每个字符对应密码第一位至第十六位具有16个概率因子。关联因子表中包括多个字符中任意两个字符的关联因子。预设的字符集即为由0到9共10个数字、a到z共26个小写字母、A到Z该共26个大写字母组成的字符集。空间覆盖率的阈值为一个预设的百分比,例如40%。
步骤2:根据所选的字符集,对概率因子表和关联因子表进行裁减,将这两个表中非字符集中字符对应的因子删除。
步骤3:首先构造密码的第一位字符。如果密码长度只有一位,则第一位字符按照概率因子计算出的概率来决定,也即从概率因子表中取最大概率因子对应的字符,代入第一位,也即采用实施例4a2中的第一种计算方式实现;如果密码长度两位以上,采用实施例4a2中的第二种计算方式实现,其中的a取0.6,b取0.4,此处不再赘述。
步骤4:构造密码的第二位字符。此处采用实施例4c2中的计算方式实现,具体地,对于字符集中的每个字符,从概率因子表中取出该字符的概率因子α,从关联因子表中取出该字符与步骤3中已构造出的第一位字符的关联因子β,计算α×0.6+β×0.4,从而得到字符集中每个字符对应的计算结果,然后将所有计算结果中最大计算结果对应的字符代入第二位;
步骤5:然后采用步骤4的方法,构造第三位字符、第四位字符......,依此类推,直到完成密码所有位的填充,此时完成一个密码的构造;
步骤6:在当前已构造出的密码基础上,取每一位概率次大的字 符(也即实施例4中步骤S408中定义的下一个字符),各位概率次大的字符的对应概率为P1—Pn,确定P1—Pn的最大值(也即实施例4中步骤S408中第X字符对应的概率),例如Pm最大,则m位更新为下一个字符(也即实施例4中b3),m位之前的字符不更新;
步骤7:按照步骤4-5的方法,更新X位后其他所有位的字符,构造出下一个密码;
步骤8:重复步骤6-7,直到构造的密码数与完整的密码空间之比达到指定的空间覆盖率阈值,完成一次密码遍历,并且将密码长度加1,再进行一次变化密码长度后的密码遍历。
采用该实施例提供的密码遍历方法的实施例,基于社会工程学的研究成果,运用了密码字符的分布统计规律,可以将常用的密码优先构造出来,大部分无效的密码则位于遍历的后部,与现有技术相比,可以在更短时间内找到有效密码。同时,引入空间覆盖率,在极大缩小密码空间的同时不会对成功率造成大的影响。
以上是对本发明所提供的密码遍历方法进行的描述。下面将对本发明提供的密码遍历装置进行描述,需要说明的是,该装置可用于执行上述任意一种密码遍历方法。
实施例7
图5是根据本发明实施例7的密码遍历装置的框图,与本发明实施例1提供的密码遍历方法相对应,本发明实施例还提供了一种密码遍历装置,参见图5,该装置可以包括第一获取模块10、第二获取模块20和确定模块30。
其中,第一获取模块10用于获取进行密码遍历的预设字符集。
第二获取模块20用于获取预设字符集对应的概率因子集和关联因子集,其中,概率因子集包括预设字符集中每一字符对应密码每位的概率因子,关联因子集包括预设字符集中任意两个字符的关联因子,具体地,第二获取模块20执行以下步骤:根据社会工程学的研究成果确定预设字符集中的各字符对应密码每一位的概率因子、预设字符集中任意两个字符的关联因子;或者统计一个或多个密码字典得到预设字符集中的各字符对应密码每一位的概率因子、预设字符集中 任意两个字符的关联因子。
确定模块30用于根据概率因子集和关联因子集确定遍历密码。
优选地,确定模块30包括第一遍历密码确定模块和第二遍历密码确定模块。
第一遍历密码确定模块用于执行以下步骤:根据概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第一位的出现概率;确定预设字符集中在第一个遍历密码第一位的出现概率最大的字符为第一个遍历密码的第一位字符;在确定第一个遍历密码的第n-1位字符后,根据第n-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第一个遍历密码第n位的出现概率,n=2,3,4…N,N为进行密码遍历的密码长度;确定预设字符集中在第一个遍历密码第n位的出现概率最大的字符为第一个遍历密码的第n位字符;将第一个遍历密码的每一位字符按位组合,以确定第一个遍历密码。
第二遍历密码确定模块用于执行以下步骤:在确定第j-1个遍历密码后,根据第j-1个遍历密码、概率因子集和关联因子集更新第j-1个遍历密码,以得到第j个遍历密码,其中,j=2,3,4…J,J为进行密码遍历的密码个数。
优选地,第一字符为预设字符集中任一字符,则第一遍历密码确定模块在计算第一字符在第一个遍历密码第一位的出现概率时,具体执行以下步骤:将第一字符对应密码第一位的概率因子作为第一字符在第一个遍历密码第一位的出现概率;或者采用以下公式计算第一字符在第一个遍历密码第一位的出现概率,
P1=α1×a1+β1×b1,
其中,P1为第一字符在第一个遍历密码第一位的出现概率,α1为第一字符对应密码第一位的概率因子,β1为第一字符与预设字符集中各字符的关联因子,a1和b1为预设的权重值,且a1+b1=1。
优选地,第m字符为第j-1个遍历密码的第m位字符的下一个字符,第m字符为将预设字符集中各字符按照在j-1个遍历密码的第m位的出现概率由大到小排序后,与第m位字符相邻的下一个字符,第 m字符对应的概率为第m字符在j-1个遍历密码的第m位下一个字符的出现概率,m=1,2,3,4…N;第X字符为第j-1个遍历密码的第X位字符的下一个字符,第X字符对应的概率为第j-1个遍历密码的第X位字符的下一个字符对应的概率中的最大概率。
第二遍历密码确定模块用于执行以下步骤:将第j-1个遍历密码的第一位字符至第X-1位字符依次作为第j个遍历密码的第一位字符至第X-1位字符;将第X字符作为第j个遍历密码的第X位字符;针对第j个遍历密码的第X+1位字符至第N位字符,在确定第j个遍历密码的第l-1位字符后,根据第l-1位字符、概率因子集和关联因子集计算预设字符集中各字符在第j个遍历密码第l位的出现概率,l=X+1,X+2…N,N为进行密码遍历的密码长度;确定预设字符集中在第j个遍历密码第l位的出现概率最大的字符为第j个遍历密码的第l位字符;将第j个遍历密码的每一位字符按位组合,以确定第j个遍历密码。
优选地,第二字符为预设字符集中任一字符,针对第一个遍历密码,第一遍历密码确定模块在根据该遍历密码的第q-1位字符、概率因子集和关联因子集计算第二字符在该遍历密码第q位的出现概率时,采用以下公式计算:
Pq=αq×aq+βq×bq,
其中,Pq为第二字符在该遍历密码第q位的出现概率,αq为第二字符对应密码第q位的概率因子,βq为第二字符与该遍历密码的第q-1位字符的关联因子,aq和bq为预设的权重值,且aq+bq=1,其中,q=2,3,4…N。
针对第二个遍历密码、第三个遍历密码、第四个遍历密码…,第二遍历密码确定模块在根据该遍历密码的第q-1位字符、概率因子集和关联因子集计算第二字符在该遍历密码第q位的出现概率时,采用以下公式计算:
Pq=αq×aq+βq×bq,
其中,Pq为第二字符在该遍历密码第q位的出现概率,αq为第二字符对应密码第q位的概率因子,βq为第二字符与该遍历密码的第 q-1位字符的关联因子,aq和bq为预设的权重值,且aq+bq=1,其中,q=X+1,X+2…N。
优选地,该装置还包括结束遍历模块,用于执行以下步骤:判断第j个遍历密码是否为有效密码;若第j个遍历密码为有效密码时,结束遍历;若第j个遍历密码不为有效密码时,计算已遍历的密码个数占预设字符集用于进行密码遍历时的密码空间的比例,以得到已遍历的密码的空间覆盖率;以及当空间覆盖率等于预设阈值时,结束遍历。
需要说明的是,上述装置实施例属于优选实施例,所涉及的模块并不一定是本申请所必须的。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于本申请的装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
从以上各实施例的描述中,可以看出,本发明实施例实现了如下技术效果:可将出现概率高的遍历密码优先遍历到,也即优先找到有效密码,避免遍历出大量无效的密码,提高密码遍历方法效率。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种密码遍历方法,其特征在于,包括:
获取进行密码遍历的预设字符集;
获取所述预设字符集对应的概率因子集和关联因子集,其中,所述概率因子集包括所述预设字符集中每一字符对应密码每位的概率因子,所述关联因子集包括所述预设字符集中任意两个字符的关联因子;以及
根据所述概率因子集和所述关联因子集确定遍历密码。
2.根据权利要求1所述的密码遍历方法,其特征在于,获取所述预设字符集对应的概率因子集和关联因子集具体为:
根据社会工程学的研究成果确定所述预设字符集中的各字符对应密码每一位的概率因子、所述预设字符集中任意两个字符的关联因子;或者
统计一个或多个密码字典得到所述预设字符集中的各字符对应密码每一位的概率因子、所述预设字符集中任意两个字符的关联因子。
3.根据权利要求1所述的密码遍历方法,其特征在于,根据所述概率因子集和所述关联因子集确定遍历密码包括:
根据所述概率因子集和所述关联因子集计算所述预设字符集中各字符在第一个遍历密码第一位的出现概率;
确定所述预设字符集中在所述第一个遍历密码第一位的出现概率最大的字符为所述第一个遍历密码的第一位字符;
在确定所述第一个遍历密码的第n-1位字符后,根据所述第n-1位字符、所述概率因子集和所述关联因子集计算所述预设字符集中各字符在所述第一个遍历密码第n位的出现概率,n=2,3,4…N,N为进行密码遍历的密码长度;
确定所述预设字符集中在所述第一个遍历密码第n位的出现概率最大的字符为所述第一个遍历密码的第n位字符;
将所述第一个遍历密码的每一位字符按位组合,以确定所述第一个遍历密码;以及
在确定第j-1个遍历密码后,根据所述第j-1个遍历密码、所述概率因子集和所述关联因子集更新所述第 j-1个遍历密码,以得到第j个遍历密码,其中,j=2,3,4…J,J为进行密码遍历的密码个数。
4.根据权利要求3所述的密码遍历方法,其特征在于,第一字符为所述预设字符集中任一字符,则计算所述第一字符在所述第一个遍历密码第一位的出现概率具体为:
将所述第一字符对应密码第一位的概率因子作为所述第一字符在所述第一个遍历密码第一位的出现概率;或者
采用以下公式计算所述第一字符在所述第一个遍历密码第一位的出现概率,
,
其中,为所述第一字符在所述第一个遍历密码第一位的出现概率,为所述第一字符对应密码第一位的概率因子,为所述第一字符与所述预设字符集中各字符的关联因子,和为预设的权重值,且。
5.根据权利要求3所述的密码遍历方法,其特征在于,
第m字符为所述第j-1个遍历密码的第m位字符的下一个字符,所述第m字符为将所述预设字符集中各字符按照在所述j-1个遍历密码的第m位的出现概率由大到小排序后,与所述第m位字符相邻的下一个字符,所述第m字符对应的概率为所述第m字符在所述j-1个遍历密码的第m位下一个字符的出现概率,m=1,2,3,4…N;
第X字符为所述第j-1个遍历密码的第X位字符的下一个字符,所述第X字符对应的概率为所述第j-1个遍历密码的第X位字符的下一个字符对应的概率中的最大概率,
在确定第j-1个遍历密码后,根据所述第j-1个遍历密码、所述概率因子集和所述关联因子集更新所述第 j-1个遍历密码,以得到第j个遍历密码包括:
将所述第j-1个遍历密码的第一位字符至第X-1位字符依次作为所述第j个遍历密码的第一位字符至第X-1位字符;
将所述第X字符作为所述第j个遍历密码的第X位字符;
针对所述第j个遍历密码的第X+1位字符至第N位字符,在确定所述第j个遍历密码的第l-1位字符后,根据所述第l-1位字符、所述概率因子集和所述关联因子集计算所述预设字符集中各字符在所述第j个遍历密码第l位的出现概率,l=X+1, X+2…N,N为进行密码遍历的密码长度;
确定所述预设字符集中在所述第j个遍历密码第l位的出现概率最大的字符为所述第j个遍历密码的第l位字符;
将所述第j个遍历密码的每一位字符按位组合,以确定所述第j个遍历密码。
6.根据权利要求5所述的密码遍历方法,其特征在于,第二字符为所述预设字符集中任一字符,针对任一个遍历密码,在根据该遍历密码的第q-1位字符、所述概率因子集和所述关联因子集计算所述第二字符在该遍历密码第q位的出现概率时,采用以下公式计算:
,
其中,为所述第二字符在该遍历密码第q位的出现概率,为所述第二字符对应密码第q位的概率因子,为所述第二字符与该遍历密码的第q-1位字符的关联因子,和为预设的权重值,且,
其中,该遍历密码为所述第一个遍历密码时,q=2,3,4…N,该遍历密码为所述第j个遍历密码时,q=X+1, X+2…N。
7.根据权利要求3所述的密码遍历方法,其特征在于,在得到第j个遍历密码后,所述方法还包括:
判断所述第j个遍历密码是否为有效密码;
若所述第j个遍历密码为所述有效密码时,结束遍历;
若所述第j个遍历密码不为所述有效密码时,计算已遍历的密码个数占所述预设字符集用于进行所述密码遍历时的密码空间的比例,以得到已遍历的密码的空间覆盖率;以及
当所述空间覆盖率等于预设阈值时,结束遍历。
8.一种密码遍历装置,其特征在于,包括:
第一获取模块,用于获取进行密码遍历的预设字符集;
第二获取模块,用于获取所述预设字符集对应的概率因子集和关联因子集,其中,所述概率因子集包括所述预设字符集中每一字符对应密码每位的概率因子,所述关联因子集包括所述预设字符集中任意两个字符的关联因子;以及
确定模块,用于根据所述概率因子集和所述关联因子集确定遍历密码。
9.根据权利要求8所述的密码遍历装置,其特征在于,所述确定模块包括:
第一遍历密码确定模块,用于执行以下步骤:根据所述概率因子集和所述关联因子集计算所述预设字符集中各字符在第一个遍历密码第一位的出现概率;确定所述预设字符集中在所述第一个遍历密码第一位的出现概率最大的字符为所述第一个遍历密码的第一位字符;在确定所述第一个遍历密码的第n-1位字符后,根据所述第n-1位字符、所述概率因子集和所述关联因子集计算所述预设字符集中各字符在所述第一个遍历密码第n位的出现概率,n=2,3,4…N,N为进行密码遍历的密码长度;确定所述预设字符集中在所述第一个遍历密码第n位的出现概率最大的字符为所述第一个遍历密码的第n位字符;将所述第一个遍历密码的每一位字符按位组合,以确定所述第一个遍历密码;以及
第二遍历密码确定模块,用于执行以下步骤:在确定第j-1个遍历密码后,根据所述第j-1个遍历密码、所述概率因子集和所述关联因子集更新所述第 j-1个遍历密码,以得到第j个遍历密码,其中,j=2,3,4…J,J为进行密码遍历的密码个数。
10.根据权利要求9所述的密码遍历装置,其特征在于,
第m字符为所述第j-1个遍历密码的第m位字符的下一个字符,所述第m字符为将所述预设字符集中各字符按照在所述j-1个遍历密码的第m位的出现概率由大到小排序后,与所述第m位字符相邻的下一个字符,所述第m字符对应的概率为所述第m字符在所述j-1个遍历密码的第m位下一个字符的出现概率,m=1,2,3,4…N;
第X字符为所述第j-1个遍历密码的第X位字符的下一个字符,所述第X字符对应的概率为所述第j-1个遍历密码的第X位字符的下一个字符对应的概率中的最大概率,
所述第二遍历密码确定模块用于执行以下步骤:将所述第j-1个遍历密码的第一位字符至第X-1位字符依次作为所述第j个遍历密码的第一位字符至第X-1位字符;将所述第X字符作为所述第j个遍历密码的第X位字符;针对所述第j个遍历密码的第X+1位字符至第N位字符,在确定所述第j个遍历密码的第l-1位字符后,根据所述第l-1位字符、所述概率因子集和所述关联因子集计算所述预设字符集中各字符在所述第j个遍历密码第l位的出现概率,l=X+1, X+2…N,N为进行密码遍历的密码长度;确定所述预设字符集中在所述第j个遍历密码第l位的出现概率最大的字符为所述第j个遍历密码的第l位字符;将所述第j个遍历密码的每一位字符按位组合,以确定所述第j个遍历密码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510069374.3A CN104717058B (zh) | 2015-02-10 | 2015-02-10 | 密码遍历方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510069374.3A CN104717058B (zh) | 2015-02-10 | 2015-02-10 | 密码遍历方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104717058A CN104717058A (zh) | 2015-06-17 |
CN104717058B true CN104717058B (zh) | 2018-03-20 |
Family
ID=53416056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510069374.3A Active CN104717058B (zh) | 2015-02-10 | 2015-02-10 | 密码遍历方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104717058B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105262584B (zh) * | 2015-09-08 | 2018-09-07 | 厦门市美亚柏科信息股份有限公司 | 分布式密码恢复方法和*** |
CN106559222A (zh) * | 2016-11-28 | 2017-04-05 | 广东省信息安全测评中心 | 穷举法解密中目标口令规则集获取方法与*** |
CN107579821B (zh) * | 2017-09-19 | 2020-04-28 | 厦门市美亚柏科信息股份有限公司 | 密码字典生成方法及计算机可读存储介质 |
CN113407924B (zh) * | 2021-06-01 | 2022-11-11 | 厦门市美亚柏科信息股份有限公司 | 基于无障碍服务的打开应用锁方法、终端设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102263641A (zh) * | 2011-07-18 | 2011-11-30 | 辽宁国兴科技有限公司 | 一种动态密码生成验证方法 |
CN102983967A (zh) * | 2012-12-06 | 2013-03-20 | 厦门市美亚柏科信息股份有限公司 | 复杂密码快速遍历算法及装置 |
CN103701590A (zh) * | 2014-01-07 | 2014-04-02 | 厦门市美亚柏科信息股份有限公司 | 一种基于字典的复杂密码遍历方法及装置 |
EP2738975A1 (en) * | 2011-07-25 | 2014-06-04 | Mitsubishi Electric Corporation | Encryption device, encryption method and encryption program |
JP2014171020A (ja) * | 2013-03-01 | 2014-09-18 | Kddi Corp | 情報伝送システム、符号化装置、復号装置、情報伝送方法、符号化方法、復号方法、およびプログラム |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009276916A (ja) * | 2008-05-13 | 2009-11-26 | Sony Corp | 通信装置、通信方法、リーダライタ及び通信システム |
-
2015
- 2015-02-10 CN CN201510069374.3A patent/CN104717058B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102263641A (zh) * | 2011-07-18 | 2011-11-30 | 辽宁国兴科技有限公司 | 一种动态密码生成验证方法 |
EP2738975A1 (en) * | 2011-07-25 | 2014-06-04 | Mitsubishi Electric Corporation | Encryption device, encryption method and encryption program |
CN102983967A (zh) * | 2012-12-06 | 2013-03-20 | 厦门市美亚柏科信息股份有限公司 | 复杂密码快速遍历算法及装置 |
JP2014171020A (ja) * | 2013-03-01 | 2014-09-18 | Kddi Corp | 情報伝送システム、符号化装置、復号装置、情報伝送方法、符号化方法、復号方法、およびプログラム |
CN103701590A (zh) * | 2014-01-07 | 2014-04-02 | 厦门市美亚柏科信息股份有限公司 | 一种基于字典的复杂密码遍历方法及装置 |
Non-Patent Citations (1)
Title |
---|
利用社会工程学进行密码猜想;杨浩;《西安文理学院学报:自然科学版(2013)》;20131031(第4期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104717058A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104717058B (zh) | 密码遍历方法和装置 | |
KR102519076B1 (ko) | 극성 코드를 구성하는 장치 및 방법 | |
CN106161012A (zh) | 一种基于极化码纠错的量子密钥分发后处理***和方法 | |
CN107590842B (zh) | 基于像素和dna交叉动态混沌密码的图像加密方法和装置 | |
US20120166808A1 (en) | Lattice-based ring signature method | |
CN111478885B (zh) | 一种非对称加解密方法、设备及存储介质 | |
KR101805878B1 (ko) | 압축을 사용하여 패스워드 공격 방해 | |
CN106452757B (zh) | 量子秘密共享***及其共享方法、纠错方法 | |
CN111756521B (zh) | 基于Feistel-SP结构的密码S盒设计方法 | |
RU2444127C1 (ru) | Способ мягкого декодирования систематических блоковых кодов | |
Cadenas et al. | Median filter architecture by accumulative parallel counters | |
CN103873239B (zh) | 基于偶数公钥密码体制应用的偶数素数对的快速生成方法 | |
CN112887509A (zh) | 一种基于多混沌***的融合加密方法 | |
Wang et al. | A Chaotic Key Expansion Algorithm Based on Genetic Algorithm. | |
Kölbl et al. | Differential cryptanalysis of Keccak variants | |
CN106330424A (zh) | 基于sm3算法的密码模块的防攻击方法及装置 | |
Le Gal et al. | Low-latency sorter architecture for polar codes successive-cancellation-list decoding | |
CN102638344B (zh) | 一种加固的基于压缩函数的hash函数构造方法 | |
CN116886273A (zh) | 基于生物特征密钥和立方s盒的三维医学图像加密方法 | |
CN107943754B (zh) | 一种基于遗传算法的异构冗余***优化方法 | |
Hostens et al. | Asymptotic adaptive bipartite entanglement-distillation protocol | |
CN113971296B (zh) | 一种id模糊化的数据处理*** | |
CN112134679B (zh) | 针对sm4的组合高阶侧信道攻击方法、装置、设备及介质 | |
WO2018109809A1 (ja) | 復号装置、復号方法およびプログラム | |
WO2020213152A1 (ja) | 整列処理装置、選別システム、整列処理方法、及び非一時的なコンピュータ可読媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |