一种基于键盘规则的密码遍历算法
【技术领域】
[0001] 本发明涉及密码加解密领域,具体涉及一种基于键盘规则的密码遍历算法。
【背景技术】
[0002] 暴力遍历和字典遍历是目前密码恢复中最常用的两种遍历方式。暴力遍历就是对 用户制定的规则内的所有密码进行遍历,字典遍历则是对字典文件中的密码进行遍历。暴 力方式往往需要较多的规则来覆盖尽可能大的密码空间以提高密码恢复的成功率,但密码 空间太大将造成遍历时间倍增,甚至需要成百上千年的时间,使密码恢复失去意义。字典遍 历方式的成功率往往受限于字典中的密码数,由于字典的密码数一般不会太多,因此可以 短时间内完成密码的遍历,但一般只能恢复出常用的密码,对于一些复杂密码无能为力。
[0003] 如何在有效的时间内恢复出尽可能复杂的密码是当前的主要研宄方向。目前,针 对暴力方式,研宄主要集中在通过各种硬件加速、算法优化、分布式技术来提高遍历的速 度,以此来缩短遍历的时间。但是通过提高遍历速度的方法只能使遍历时间线性减小,而密 码长度增长、密码字符集增大却使遍历时间几何级数增大;而针对字典遍历,研宄主要集中 在对字典的收集方面,收集的密码数比较有限。
[0004] 专利《复杂密码快速遍历算法及装置》和《一种基于字典的复杂密码遍历算法》在 暴力遍历和字典遍历的基础上,设计了针对具有分段特征的密码遍历算法。但在常用的密 码中,有一种密码没有分段特征,无法用以上两个专利的算法来实现密码遍历,而这种密码 又具有很明显的特征,那就是符合键盘规则的密码。
[0005] 键盘规则是指按照键盘上一定的按键顺序构成密码的规则,键盘规则可以根据不 同的按键顺序构成密码。例如"Iq2w3e4r5t6y7u8i9 〇0p",是按照键盘上数字和字母两排交 叉输出,而实际使用的密码段可能是" lq2w"、" Iq2w3e4r"、"4r5t6y"等各种长度。
[0006] 普通的暴力遍历算法,只能代入所有可能的键盘字符进行全排列组合,即使8位 以内的密码在短时间内都无法完成遍历。由于其无法使用键盘排列顺序这个特征,使其遍 历的密码绝大部分是无效的。
【发明内容】
[0007] 解决上述技术问题,本发明提供了一种基于键盘规则的密码遍历算法,针对键盘 规则的特征,设计了相应的遍历算法,可以实现对不同键盘顺序、不同起始位置、不同长度 的密码进行遍历。
[0008] 为了达到上述目的,本发明所采用的技术方案是,一种基于键盘规则的密码遍历 算法,包括以下步骤:
[0009] 步骤1 :获取键盘上的字符并根据键盘字符规则建立密码集合,
[0010] 步骤2 :设定密码集合的暴力遍历规则,
[0011] 步骤3 :将暴力遍历规则和密码集合作为遍历算法的数据源,使用遍历算法对密 码集合中的字符进行构造生成最终的遍历密码。
[0012] 进一步的,所述密码集合包括第一遍历字符表和第二遍历字符表,该第一和第二 遍历字符表均为4行13列,第一遍历字符表依据键盘字符规则存储单纯按下按键后输入的 字符,第二遍历字符表依据字符键盘规则存储按住"Shift"按键后输入的字符,且根据键盘 字符规则,所述第一和第二遍历字符表中的第1行均顶格保存,第2至第4行均空1格开始 保存。
[0013] 更进一步的,所述步骤2中,第一遍历字符表和第二遍历字符表暴力遍历规则包 括:
[0014] 规则1 :不跨行遍历规则,锁定字符遍历表中的某行以从左往右、从右往左、从左 往右再返回、从右往左再返回规则遍历,
[0015] 规则2 :从上往下遍历规则,锁定字符遍历表中的某列以从上往下,从下往上,从 上往下再返回,从下往上再返回规则遍历,
[0016] 规则3 :跨行遍历规则,锁定字符遍历表中的某几行以各行同方向、各行反方向规 则遍历,
[0017] 规则4 :跨列遍历规则,锁定字符遍历表中的某几列以各列同方向、各列反方向的 规则遍历。
[0018] 本发明通过采用上述技术方案,与现有技术相比,具有如下优点:
[0019] 本方案针对键盘规则的特征,设计了相应的遍历算法,可以实现对不同键盘顺序、 不同起始位置、不同长度的密码进行遍历。
【附图说明】
[0020] 图1是本发明的实施例初始时A与B均指向第1行第1列的示意图。
[0021] 图2是本发明的实施例B往右移1位的示意图。
[0022] 图3是本发明的实施例A往右移1位的示意图。
[0023] 图4是本发明的实施例A与B重合,A返回第1位,B右移1位的示意图。
[0024] 图5是本发明的实施例A往右移1位的示意图。
[0025] 图6是本发明的实施例A和B都指向最后一列的示意图。
[0026] 图7是本发明的实施例A和B都改变移动方向,B向左移一位的示意图。
[0027] 图8是本发明的实施例A左移一位的示意图。
[0028] 图9是本发明的实施例A与B重合,A返回最后一列,B左移一位的示意图。
【具体实施方式】
[0029] 作为一个具体的实施例,为了达到上述目的,本发明所采用的技术方案是,一种基 于键盘规则的密码遍历算法,包括以下步骤:
[0030] 步骤1 :获取键盘上的字符并根据键盘字符规则建立密码集合,所述密码集合包 括第一遍历字符表和第二遍历字符表,如下所示,表1为第一遍历字符表,表2为第二遍历 字符表,
[0031]
【主权项】
1. 一种基于键盘规则的密码遍历算法,其特征在于:包括以下步骤: 步骤1 :获取键盘上的字符并根据键盘字符规则建立密码集合, 步骤2 :设定密码集合的暴力遍历规则, 步骤3 :将暴力遍历规则和密码集合作为遍历算法的数据源,使用遍历算法对密码集 合中的字符进行构造生成最终的遍历密码。
2. 根据权利要求1所述的一种基于键盘规则的密码遍历算法,其特征在于:所述密码 集合包括第一遍历字符表和第二遍历字符表,该第一和第二遍历字符表均为4行13列,第 一遍历字符表依据键盘字符规则存储单纯按下按键后输入的字符,第二遍历字符表依据字 符键盘规则存储按住"Shift"按键后输入的字符,且根据键盘字符规则,所述第一和第二遍 历字符表中的第1行均顶格保存,第2至第4行均空1格开始保存。
3. 根据权利要求2所述的一种基于键盘规则的密码遍历算法,其特征在于:所述步骤2 中,第一遍历字符表和第二遍历字符表暴力遍历规则包括: 规则1 :不跨行遍历规则,锁定字符遍历表中的某行以从左往右、从右往左、从左往右 再返回、从右往左再返回规则遍历, 规则2 :从上往下遍历规则,锁定字符遍历表中的某列以从上往下,从下往上,从上往 下再返回,从下往上再返回规则遍历, 规则3 :跨行遍历规则,锁定字符遍历表中的某几行以各行同方向、各行反方向规则遍 历, 规则4 :跨列遍历规则,锁定字符遍历表中的某几列以各列同方向、各列反方向的规则 遍历。
4. 根据权利要求3所述的一种基于键盘规则的密码遍历算法,其特征在于:所述步骤3 中, 对于暴力遍历规则的规则1,包括以下步骤: 步骤31 :设置两个索引,一个指向起始位置A,一个指向终止位置B,初始时两个索引都 指向表的第1行第1列; 步骤32 :从A开始到B结束,以及从A开始到B然后返回A结束两种情况构造密码,密 码相同则过滤; 步骤33 :B右移1位,A从第1位开始,按照步骤32的方法构造密码,完成后A右移1 位,按照步骤32的方法继续构造密码,直到A与B重合; 步骤34 :重复步骤33,直到A与B在最右边重合,此时A与B改变移动方向,B左移1 位,按照步骤32的方法构造密码,完成后A左移1位继续构造密码,直到A与B在最左端重 合,此时完成表第1行的密码遍历; 步骤35 :将A和B分别移往第2行第1位,重复步骤32-步骤34,以此类推完成第2-4 行的密码遍历;每行的起始位置以及终止位置是指包含有效字符的位置,置O的位置不使 用。
5. 根据权利要求4所述的一种基于键盘规则的密码遍历算法,其特征在于:所述步骤3 中, 对于暴力遍历规则的规则2,遍历算法与规则1相同,不同之处在于:A和B是先往下移 动后再往上移动,以此遍历规则2的所有密码。
6. 根据权利要求4所述的一种基于键盘规则的密码遍历算法,其特征在于:所述步骤3 中, 对于暴力遍历规则的规则3,包括以下步骤: 步骤41 :设置4个索引和1个方向值,其中2个行索引,2个列索引,由于第2-4行第1 列无有效值,因此第1行第1列的字符无法与第2-4行进行构造密码,初始时2个行索引A 指向第2列,B指向第3列,2个列索引C指向第1行,D指向第2行;方向值为正代表从A 往B,方向值为负代表从B往A ; 步骤42 :首先处理各行同方向,即从C行A列开始往C行B列提取字符,方向值不变, 然后从C+1行A列往C+1行B列提取字符,直到D行A列往D行B列提取字符终止,提取的 字符构成一个密码,该密码为各行同方向;然后处理各行反方向,即从C行A列开始往C行 B列提取字符,改变方向值,C+1行B列往A列提取字符,然后改变方向值,直到D行提取完 成,提取的字符构成一个密码,该密码为各行反方向; 步骤43 :B往右移1位,按步骤42构造密码,然后A右移1位,按步骤42构造密码,直 到A与B相邻为止; 步骤44 :重复步骤43,直到B移动到表最右端结束; 步骤45 :然后D往下移动1位,执行步骤43-44遍历密码;然后C往下移1位,执行步 骤43-44遍历密码,直到C和D相邻为止; 步骤46 :重复步骤45,直到D移动到表最下端结束,到此规则3的所有密码遍历完成。
7. 根据权利要求6所述的一种基于键盘规则的密码遍历算法,其特征在于:所述步骤3 中, 对于暴力遍历规则的规则4,遍历算法与规则3相同,不同之处在于:与规则3的密码 构造流程类似,遍历规则4的所有密码。
【专利摘要】本发明涉及密码加解密领域,具体涉及一种基于键盘规则的密码遍历算法,步骤1:获取键盘上的字符并根据键盘字符规则建立密码集合,步骤2:设定密码集合的暴力遍历规则,步骤3:将暴力遍历规则和密码集合作为遍历算法的数据源,使用遍历算法对密码集合中的字符进行构造生成最终的遍历密码。本方案针对键盘规则的特征,设计了相应的遍历算法,可以实现对不同键盘顺序、不同起始位置、不同长度的密码进行遍历。
【IPC分类】H04L9-08
【公开号】CN104579642
【申请号】CN201510001710
【发明人】张光斌, 王海滨, 张永光, 汤伟宾
【申请人】厦门市美亚柏科信息股份有限公司
【公开日】2015年4月29日
【申请日】2015年1月5日