CN103400072A - 哈希值密码的恢复方法和装置 - Google Patents

哈希值密码的恢复方法和装置 Download PDF

Info

Publication number
CN103400072A
CN103400072A CN2013103262251A CN201310326225A CN103400072A CN 103400072 A CN103400072 A CN 103400072A CN 2013103262251 A CN2013103262251 A CN 2013103262251A CN 201310326225 A CN201310326225 A CN 201310326225A CN 103400072 A CN103400072 A CN 103400072A
Authority
CN
China
Prior art keywords
chain
rainbow
cryptographic hash
value
fic
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.)
Pending
Application number
CN2013103262251A
Other languages
English (en)
Inventor
柳秀霞
汤伟宾
王海滨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Meiya Pico Information Co Ltd
Original Assignee
Xiamen Meiya Pico Information Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xiamen Meiya Pico Information Co Ltd filed Critical Xiamen Meiya Pico Information Co Ltd
Priority to CN2013103262251A priority Critical patent/CN103400072A/zh
Publication of CN103400072A publication Critical patent/CN103400072A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种哈希值密码的恢复方法和装置,该方法包括:配置系统初始化信息;利用CPU和GPU分别生成彩虹表并按顺序存储于彩虹表文件中;在彩虹表文件中的任一彩虹表与预设彩虹表的参数相匹配的情况下,从哈希值文件中获取一个待恢复的哈希值;判断能否利用GPU对该待恢复的哈希值进行密码恢复;如果判断结果为是,则利用GPU对该待恢复的哈希值进行密码恢复,直至恢复完成哈希值文件中所有待恢复的哈希值的密码;其中,系统初始化信息包括哈希算法类型、与彩虹表相关的信息等。本发明提供的方法和装置,利用CPU和GPU分别生成彩虹表,并结合GPU和彩虹表算法来恢复哈希值密码,可大大降低哈希值密码的恢复时间。

Description

哈希值密码的恢复方法和装置
技术领域
 本发明属于密码恢复领域,特别涉及一种哈希值密码的恢复方法和装置。
背景技术
哈希(Hash)算法,即散列函数,是一种单向密码体制,即是一种从明文到密文的不可逆映射,只有加密过程,没有解密过程。同时,哈希算法可以将任意长度的输入经过变化以后得到固定长度的输出。哈希算法的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。
目前,常见的哈希算法主要包括MDx系列和SHA系列,其广泛应用于信息加密、数字签名、文件校验、鉴权协议等方面,相应地,对破解哈希算法的需求也越来越高。     
破解哈希算法,即恢复哈希值的密码,其主要任务是:对于给出的一个哈希值y,反算出一个x来满足h(x)=y。理论上有以下两种极端的方式:
第一种,暴力破解法,即穷尽搜索X中的所有元素,验证是否存在x(x∈X)使得h(x)=y,这样最多需要对h进行|X|次赋值。
第二种,查表法,即将所有x(x∈X) 及其哈希值y进行保存,当已知某个y时,在存储空间中搜索y对应的x。
上述两种方式在理论上都是可以的,但第一种方式需要海量的计算时间,第二种方式需要海量的存储空间,在实际应用中,第一种方式的时间复杂度和第二种方式的空间复杂度都是人类无法接受的范围。
基于此,提出了彩虹表算法,它是结合了暴力破解法和查表法并在这两者之间取得一个折中,用人类可以承受的时间范围和存储空间范围来恢复哈希值的密码,其核心思想是将明文计算得到的哈希值由一个截短函数(R函数)映射回到明文空间,进而可交替地计算明文和哈希值,以减少恢复哈希值密码的时间。
利用彩虹表算法对哈希值的密码进行恢复,虽能够分别获得比暴力破解法及查表法高得多的时间效率和空间效率,但对于恢复密码较长的哈希值,其预计算阶段及在线分析阶段需要大量的彩虹链计算,在采用CPU的串行计算方式的情况下,需要的时间仍然是不能承受的范围。因此,由于CPU计算能力的限制,很难做到将彩虹表算法应用于密码较长的哈希值的恢复。
图形处理器(Graphic Processing Unit,GPU)作为近年来迅速发展的通用并行计算平台,其并行线程执行模型和线程同步技术专用于解决大规模的并行计算,使得GPU在大多数数据处理型应用上的性能优于CPU。
但是,目前还没有将GPU与彩虹表算法相结合用来恢复哈希值密码的方案。
发明内容
本发明所要解决的技术问题是提供一种哈希值密码的恢复方法和装置,解决由于CPU计算能力的限制,无法用彩虹表算法恢复密码较长的哈希值的问题。  
本发明一方面提供了一种哈希值密码的恢复方法,包括:
配置系统初始化信息;
利用CPU和GPU分别生成彩虹表并按顺序存储于彩虹表文件中;
在彩虹表文件中的任一彩虹表与预设彩虹表的参数相匹配的情况下,从哈希值文件中获取一个待恢复的哈希值;
判断能否利用GPU对该待恢复的哈希值进行密码恢复;
如果判断结果为是,则利用GPU对该待恢复的哈希值进行密码恢复,直至恢复完成哈希值文件中所有待恢复的哈希值的密码;
其中,所述系统初始化信息包括哈希算法类型,字符集,字符集文件,彩虹链的长度,每个彩虹表的彩虹链的个数,需生成的彩虹表的个数,初始彩虹表表号索引,密码口令的最小长度和最大长度,生成的彩虹表存储路径,待恢复的哈希值文件和恢复结果文件。
进一步的,利用CPU生成彩虹表的步骤,具体包括:
随机生成一条彩虹链链首值T1
对所述T1进行哈希运算得到HT1
对所述HT1进行截短函数运算得到RHT1
将RHT1重复进行预定次数的哈希运算和截短函数运算,得到彩虹链链尾值;
根据所述彩虹链链首值和所述彩虹链链尾值形成彩虹链并保存于彩虹表。
进一步的,利用GPU生成彩虹表的步骤,具体包括:
根据GPU的计算能力设置执行彩虹链生成核函数需分配的块数和块中的线程数;
随机生成多个彩虹链链首值并保存于GPU显存中;
调度彩虹链生成核函数的线程,对所述多个彩虹链链首值并行进行预定次数的哈希运算和截短函数运算,得到与其对应的彩虹链链尾值;
根据所述多个彩虹链链首值及其对应的彩虹链链尾值分别形成彩虹链并保存于彩虹表。
进一步的,所述利用GPU对该待恢复的哈希值进行密码恢复的步骤,具体包括:
根据GPU的计算能力设置执行预计算核函数和在线分析核函数各自需分配的块数和块中的线程数;
将所述待恢复的哈希值和各猜测位置相结合进行截短函数运算后得到对应的各链首节点值Spos(P);
调度预计算核函数的线程,对所述各Spos(P)并行进行从其对应的猜测位置后移一个节点至彩虹链链尾位置前移两个节点的彩虹链节点值的还原计算,得到所述各Spos(P)对应的链尾节点值Epos(P);
根据二分查找法在彩虹表中查找链尾节点值与所述各Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P);
调度在线分析阶段核函数的线程,对所述各Sj(P)并行进行从彩虹链链首位置至Ij(P)前移一个节点的彩虹链节点值的还原计算,得到各Sj(P)对应的链尾节点值Ej(P);
任取一个Ej(P)进行哈希运算得到第一预判定哈希值;
如果所述第一预判定哈希值与待恢复哈希值相同,则密码恢复成功,将与所述第一预判定哈希值对应的密码进行存储;
其中,猜测位置为从彩虹链链首位置至彩虹链链尾位置前移两个节点之间的位置。
进一步的,本方法还包括:如果不能利用GPU对该待恢复的哈希值进行密码恢复,则利用CPU对该待恢复的哈希值进行密码恢复,具体包括:
将待恢复哈希值和猜测位置相结合进行截短函数运算后得到链首节点值
Spos(P);     将所述Spos(P)进行从猜测位置后移一个节点至彩虹链链尾位置前移两个节点的节点数次的哈希运算和截短函数运算得到的链尾节点值Epos(P);
根据二分查找法在彩虹表中查找链尾节点值与所述各Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P); 
根据Sj(P)和Ij(P)分别获得一个彩虹链链首元素值Sjs(P)及其在彩虹链上的相应位置元素值Ijs(P);
根据Sjs(P)进行自彩虹链链首位置至Ijs(P)前移一个节点的节点数次的哈希运算和截短函数运算后得到预判定值;   
将所述预判定值进行哈希运算后得到相应的第二预判定哈希值;
如果所述第二预判定哈希值与待恢复的哈希值相同,则密码恢复成功,将与所述第二预判定哈希值对应的密码进行存储;
其中,从猜测位置为彩虹链链首位置至彩虹链链尾位置前移两个节点之间的位置。
进一步的,在配置系统初始化信息的步骤之后,还包括:
对系统进行优化配置,包括对与彩虹表相关的参数进行优化,对截短函数进行优化和对GPU的计算轮算进行优化,其中,
所述对与彩虹表相关的参数进行优化具体为:在密码空间允许的情况下,增加每个彩虹表中的彩虹链的个数和彩虹表的个数;
所述对截短函数进行优化具体为:
设置截短函数为                                               
Figure 2013103262251100002DEST_PATH_IMAGE002
其中,Si,j(P)为第i条彩虹链第j位置的初始节点值,1≤i≤c, 1≤j≤l, c为每张彩虹表的彩虹链的个数,l为彩虹链的长度,N为密码空间大小;
所述对GPU的计算轮数进行优化,具体为:
在GPU设备计算功能级的主版本号分别为1,2,3的情况下,则块中线程数分别为256,768,448,配置块数分别为设备上处理器数量的3倍,3倍,16倍。
本发明同时提出一种哈希值密码的恢复装置,包括:
初始化配置单元,用于配置系统初始化信息;其中,所述系统初始化信息包括哈希算法类型,字符集,字符集文件,彩虹链的长度,每个彩虹表的彩虹链的个数,需生成的彩虹表的个数,初始彩虹表表号索引,密码口令的最小长度和最大长度,生成的彩虹表存储路径,待恢复的哈希值文件和恢复结果文件。
彩虹表生成单元,用于利用CPU和GPU分别生成彩虹表并按顺序存储于彩虹表文件中;
待恢复哈希值获取单元,用于在彩虹表文件中的任一彩虹表与预设彩虹表的参数相匹配的情况下,从哈希值文件中获取一个待恢复的哈希值;
判断单元,用于判断能否利用GPU对该待恢复的哈希值进行密码恢复;
第一哈希值密码恢复单元,用于利用GPU对该待恢复的哈希值进行密码恢复,直至恢复完成哈希值文件中所有待恢复的哈希值的密码。
进一步的,所述彩虹表生成单元包括:
第一链首值生成子单元,用于随机生成一条彩虹链链首值T1
第一计算子单元,用于对所述T1进行哈希运算得到HT1
第二计算子单元,用于对所述HT1进行截短函数运算得到RHT1
第一链尾值生成子单元,用于将RHT1重复进行预定次数的哈希运算和截短函数运算,得到彩虹链链尾值;
第一彩虹链形成子单元,用于根据所述彩虹链链首值和所述彩虹链链尾值形成彩虹链并保存于彩虹表;
第一核函数设置子单元,用于根据GPU的计算能力设置执行彩虹链生成核函数需分配的块数和块中的线程数;
第二链首值生成子单元,用于随机生成多个彩虹链链首值并保存于GPU显存中;
第二链尾值生成子单元,用于调度彩虹链生成核函数的线程,对所述多个彩虹链链首值并行进行预定次数的哈希运算和截短函数运算,得到与其对应的彩虹链链尾值;
第二彩虹链形成子单元,用于根据所述多个彩虹链链首值及其对应的彩虹链链尾值分别形成彩虹链并保存于彩虹表。
进一步的,所述第一哈希值密码恢复单元具体包括:
第二核函数设置子单元,用于根据GPU的计算能力设置执行预计算核函数和在线分析核函数各自需分配的块数和块中的线程数;
第一链首节点值生成子单元,用于将所述待恢复的哈希值和各猜测位置相结合进行截短函数运算后得到对应的各链首节点值Spos(P);
第一链尾节点值生成子单元,用于调度预计算核函数的线程,对所述各链首节点值Spos(P)并行进行从其对应的猜测位置后移一个节点至彩虹链链尾位置前移两个节点的彩虹链节点值的还原计算,得到所述各Spos(P)对应的链尾节点值Epos(P);
第一链首节点值获取子单元,用于根据二分查找法在彩虹表中查找链尾节点值与所述各Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P);
第二链尾节点值生成子单元,用于调度在线分析阶段核函数的线程,对所述各Sj(P)并行进行从彩虹链链首位置至Ij(P)前移一个节点的彩虹链节点值的还原计算,得到所述各Sj(P)对应的链尾节点值Ej(P);
第一预判定哈希值生成子单元,用于任取一个Ej(P)进行哈希运算得到第一预判定哈希值;
第一密码存储子单元,用于当所述第一预判定哈希值与待恢复哈希值相同时,将与此所述第一预判定哈希值对应的密码进行存储;其中,猜测位置为从彩虹链链首位置至彩虹链链尾位置前移两个节点之间的位置。
进一步的,本装置还包括第二哈希值密码恢复单元,用于当不能利用GPU对该待恢复的哈希值进行密码恢复,则利用CPU对该待恢复的哈希值进行密码恢复,具体包括:
第二链首节点值生成子单元,用于将待恢复哈希值和猜测位置相结合进行截短函数运算后得到链首节点值Spos(P)
第三链尾节点值生成子单元,用于将所述Spos(P)进行从猜测位置后移一个节点至彩虹链链尾位置前移两个节点的节点数次的哈希运算和截短函数运算得到的链尾节点值Epos(P);
第二链首节点值获取子单元,用于根据二分查找法在彩虹表中查找链尾节点值与各Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P);  
彩虹链元素获取子单元,用于根据Sj(P)和Ij(P)分别获得一个彩虹链链首元素值Sjs(P)及其在彩虹链上的相应位置元素值Ijs(P);
预判定值生成子单元,用于根据Sjs(P)进行自彩虹链链首位置至Ijs(P)前移一个节点的节点数次的哈希运算和截短函数运算后得到预判定值;   
第二预判定哈希值生成子单元,用于将所述预判定值进行哈希运算后得到相应的第二预判定哈希值;
第二密码存储子单元,用于当所述第二预判定哈希值与待恢复的哈希值相同时,将与所述第二预判定哈希值对应的密码进行存储;
其中,猜测位置为从彩虹链链首位置至彩虹链链尾位置前移两个节点之间的位置。
进一步,本装置还包括优化配置单元,用于对系统进行优化配置,其中具体包括:
彩虹表参数优化配置子单元,用于对与彩虹表相关的参数进行优化,包括在密钥空间允许的情况下,增加每个彩虹表的彩虹链的个数和彩虹表的个数;
截短函数优化配置子单元,用于对截短函数进行优化,包括:
设置截短函数为
Figure 487066DEST_PATH_IMAGE002
其中,Si,j(P)为第i条彩虹链第j位置的初始节点值,1≤i≤c, 1≤j≤l, c为每个彩虹表中的彩虹链的个数,l为彩虹链的长度,N为密码空间大小;
GPU计算轮数优化配置子单元,用于对GPU的计算轮数进行优化,包括在GPU设备计算功能级的主版本号分别为1,2,3的情况下,配置块中线程数分别为256,768,448,块数分别为设备上处理器数量的3倍,3倍,16倍。
本发明提出的哈希值密码的恢复方法和装置,利用CPU和GPU分别生成彩虹表,将GPU的并行计算能力和彩虹表算法相结合来恢复哈希值的密码,大大降低了哈希值密码的恢复时间。
附图说明
图1是本发明哈希值密码的恢复方法第一实施例的流程图;
图2是本发明哈希值密码的恢复方法第二实施例的流程图;
图3是本发明哈希值密码的恢复方法第四实施例中利用GPU对该待恢复的哈希值进行密码恢复的流程图;
图4是本发明哈希值密码的恢复装置第一实施例的结构示意图;
图5是本发明哈希值密码的恢复装置第二实施例的结构示意图;
图6是本发明哈希值密码的恢复装置第四实施例中的第一哈希值密码恢复单元的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明哈希值密码的恢复方法第一实施例的流程图。其中包括如下步骤: 
S11,配置系统初始化信息。
其中,系统初始化信息包括哈希算法类型(hash),字符集(charset),字符集文件(charsetfile),密码口令的最小长度(minplainlen)和最大长度(maxplainlen),彩虹链的长度(chainlen),每个彩虹表的彩虹链的个数(chaincount),需生成的彩虹表的个数(tablecount),初始彩虹表表号索引(tableindex),彩虹表存储路径(filepath),待恢复的哈希值文件(inputfile)和恢复结果文件(outputfile)。
S13,利用CPU和GPU分别生成彩虹表并按顺序存储于彩虹表文件中。
S15,在彩虹表文件中的任一彩虹表与预设彩虹表的参数相匹配的情况下,从哈希值文件中获取一个待恢复的哈希值。
具体的,在彩虹表文件中获取一个彩虹表,将其与根据需要而预设的彩虹表的各参数进行对比,检验是否匹配。
S17,根据系统硬件信息判断能否利用GPU对该待恢复的哈希值进行密码恢复,如果判断结果为是,转S19。
S19,利用GPU对该待恢复的哈希值进行密码恢复,直至恢复完成哈希值文件中所有待恢复的哈希值的密码。
在本发明提出的哈希值密码的恢复方法第一实施例中,利用CPU和GPU分别生成彩虹表,将GPU的并行计算能力和彩虹表算法相结合来恢复哈希值的密码,大大降低了哈希值密码的恢复时间。
参照图2,示出了本发明哈希值密码的恢复方法第二实施例的流程图,本方法第二实施例是在上述方法第一实施例基础上的改进,在S11之后,还包括如下步骤:
S12,对系统进行优化配置,包括对与彩虹表相关的参数进行优化,对截短函数进行优化和对GPU的计算轮数进行优化,其中,
对与彩虹表相关的参数进行优化具体为:在密码空间允许的情况下,增加每个彩虹表中的彩虹链的个数和彩虹表的个数。
其中,设每个彩虹表中的彩虹链个数为
Figure 2013103262251100002DEST_PATH_IMAGE004
,彩虹链长度为
Figure 2013103262251100002DEST_PATH_IMAGE006
,彩虹表个数为
Figure 2013103262251100002DEST_PATH_IMAGE008
,密码空间总大小为
Figure 2013103262251100002DEST_PATH_IMAGE010
对于一个
Figure 2013103262251100002DEST_PATH_IMAGE012
的彩虹表,其查找成功率为:
Figure 2013103262251100002DEST_PATH_IMAGE014
,其中(
Figure 2013103262251100002DEST_PATH_IMAGE016
Figure 2013103262251100002DEST_PATH_IMAGE018
),
Figure 131542DEST_PATH_IMAGE008
个表的查找成功率满足如下方程:
Figure 2013103262251100002DEST_PATH_IMAGE020
;同时结合GPU的块内线程数的约束(块内线程数为2的幂),可确定=4096。因此,在密码空间允许的情况下,增大
Figure 242869DEST_PATH_IMAGE008
更容易提高彩虹表的性能。
对截短函数进行优化具体为:保证截短函数值在N上是均匀分布的。
设置截短函数为;其中,Si,j(P)为第i条彩虹链第j位置的初始节点值,1≤i≤c, 1≤j≤l, c为每张彩虹表的彩虹链的个数,l为彩虹链的长度,N为密码空间大小。
对GPU的计算轮数进行优化具体为:由于GPU的显存大小的限制,需要将彩虹表分解到GPU可完成有效计算的最大单位(块内线程数thread×块数block)逐一完成。从数据传输效率和GPU并行计算能力的角度来考虑,应尽量扩大每次SP(流处理器)传输的数量,以避免通讯开销。
因此,在GPU设备计算功能级的主版本号分别为1,2,3的情况下,配置块中线程数分别为256,768,448,块数分别为设备上处理器数量的3倍,3倍,16倍。
进一步的,将介绍本发明哈希值密码的恢复方法第三实施例,该方法第三实施例是在上述方法第二实施例基础上的改进。
在该方法第三实施例中, S13具体包括利用CPU生成彩虹表和利用GPU生成彩虹表。
其中,利用CPU生成彩虹表,具体包括:
S1311,随机生成一条彩虹链链首值T1
S1312,对T1进行哈希运算得到HT1
S1313,对HT1进行截短函数运算得到RHT1
S1314,将RHT1重复进行预定次数的哈希运算和截短函数运算,得到彩虹链链尾值,其中,预定次数为配置的彩虹链的长度值。
S1315,根据S1311中生成的彩虹链链首值和S1314中生成的彩虹链链尾值形成彩虹链并保存于彩虹表中。
其中,利用GPU生成彩虹表,具体包括:
S1321,根据GPU的计算能力设置执行彩虹链生成核函数需分配的块数(block)和块中的线程数(thread)。
其中,GPU的计算能力是指GPU中的运算平台(CUDA,Compute Unified Device Architecture)的计算能力。
S1322,随机生成多个彩虹链链首值并保存于GPU显存中。
S1323, 调度彩虹链生成核函数的线程,对多个彩虹链链首值并行进行预定次数的哈希运算和截短函数运算,得到与多个彩虹链链首值对应的彩虹链链尾值。其中,预定次数为配置的彩虹链的长度值。
S1324,根据S1322中生成的多个彩虹链链首值及其对应的S1323中生成的多个彩虹链链尾值分别形成彩虹链并保存于彩虹表。
当S1311至S1315和S1322至S1324完成后,判断彩虹表的个数是否已经达到系统初始化信息中配置的需生成的彩虹表的个数(tablecount),如果判断结果为否,则重复执行S1311至S1315和S1322至S1324,直至彩虹表的个数与配置的tablecount相同。
在所有需生成的彩虹表生成之后,将彩虹表根据所有彩虹链链尾的大小按顺序依次存储于彩虹表文件中。
进一步的,参照图3,示出了本发明哈希值密码的恢复方法第四实施例中利用GPU对该待恢复的哈希值进行密码恢复的流程图,该方法第四实施例是在上述方法第三实施例基础上的改进。
在该方法第四实施例中, 利用GPU对该待恢复的哈希值进行密码恢复的步骤具体包括:
S191,根据GPU的计算能力设置执行预计算核函数需分配的块数和块中的线程数及在线分析核函数需分配的块数和块中的线程数。
S192, 将待恢复的哈希值和各猜测位置相结合进行截短函数运算后得到对应的各链首节点值Spos(P)。
S193,调度预计算核函数的线程,对各Spos(P)并行进行从其对应的猜测位置后移一个节点至彩虹链链尾位置前移两个节点的彩虹链节点值的还原计算,得到各Spos(P)对应的链尾节点值Epos(P)。
也就是说,对各链首节点值Spos(P)通过预计算核函数的线程并行进行彩虹链链尾节点值的还原计算,该还原计算是从链首节点值Spos(P)对应的猜测位置后移一个节点至彩虹链链尾位置前移两个节点进行预定次数的哈希运算和截短函数运算。其中,预定次数为各Spos(P)对应的猜测位置后移一个节点至彩虹链链尾位置前移两个节点之间的节点数次。
S194,根据二分查找法在彩虹表中查找链尾节点值与各Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P)。
S195, 调度在线分析阶段核函数的线程,对各Sj(P)并行进行从彩虹链链首位置至Ij(P)前移一个节点的彩虹链节点值的还原计算,得到各Sj(P)对应的链尾节点值Ej(P)。
S196,任取一个Ej(P)进行哈希运算得到第一预判定哈希值。
S197,比较第一预判定哈希值与待恢复哈希值是否相同,若相同,则密码恢复成功,并转S198。
S198,将与第一预判定哈希值对应的密码进行存储。
当待恢复的哈希值密码恢复完毕后,可返回S15并依次进行后续步骤,直至恢复完成哈希值文件中所有待恢复的哈希值的密码。
进一步的,将介绍本发明哈希值密码的恢复方法第五实施例,该方法第五实施例是在上述方法第四实施例基础上的改进。
在该方法第五实施例中,如果S17的判断结果为否,即如果不能利用GPU对该待恢复的哈希值进行密码恢复,还包括S20:利用CPU对该待恢复的哈希值进行密码恢复,具体包括如下步骤:
S201, 将待恢复哈希值和猜测位置相结合进行截短函数运算后得到链首节点值Spos(P)。
S202,将Spos(P)进行从猜测位置后移一个节点至彩虹链链尾位置前移两个节点的节点数次的哈希运算和截短函数运算得到的链尾节点值Epos(P)。
S203,根据二分查找法在彩虹表中查找链尾节点值与各Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P)。 
S204,根据Sj(P)和Ij(P)分别获得一个彩虹链链首元素值Sjs(P)及其在彩虹链上的相应位置元素值Ijs(P)。
S205,根据Sjs(P)进行自彩虹链链首位置0至Ijs(P)前移一个节点的节点数次的哈希运算和截短函数运算后得到预判定值。   
S206,将该预判定值进行哈希运算后得到相应的第二预判定哈希值。
S207,比较第二预判定哈希值与待恢复的哈希值,如果第二预判定哈希值与待恢复的哈希值相同,则密码恢复成功,转S208。
S208,将与第二预判定哈希值对应密码进行存储。
当待恢复的哈希值密码恢复完毕后,可返回S15并依次进行后续步骤,直至恢复完成哈希值文件中所有待恢复的哈希值的密码。
同时,本发明还提出了一种本发明哈希值密码的恢复方法相对应的装置,参看图4,示出了本发明哈希值密码的恢复装置第一实施例的结构示意图,包括:
初始化配置单元41,用于配置系统初始化信息。
其中,系统初始化信息包括哈希算法类型(hash),字符集(charset),字符集文件(charsetfile),密码口令的最小长度(minplainlen)和最大长度(maxplainlen),彩虹链的长度(chainlen),每个彩虹表的彩虹链的个数(chaincount),需生成的彩虹表的个数(tablecount),初始彩虹表表号索引(tableindex),彩虹表存储路径(filepath),待恢复的哈希值文件(inputfile)和恢复结果文件(outputfile)。
彩虹表生成单元43,用于利用CPU和GPU分别生成彩虹表并按顺序存储于彩虹表文件中。
待恢复哈希值获取单元45,用于在彩虹表文件中的任一彩虹表与预设彩虹表的参数相匹配的情况下,从哈希值文件中获取一个待恢复的哈希值。
具体的,在彩虹表文件中获取一个彩虹表,将其与根据需要预设的彩虹表的各参数进行对比,检验是否匹配。
判断单元47,用于根据系统硬件信息判断能否利用GPU对该待恢复的哈希值进行密码恢复。
第一哈希值密码恢复单元49,用于利用GPU对该待恢复的哈希值进行密码恢复,直至恢复完成哈希值文件中所有待恢复的哈希值的密码。
在本发明提出的哈希值密码的恢复装置实施例中,利用CPU和GPU分别生成彩虹表,将GPU的并行计算能力和彩虹表算法相结合来恢复哈希值的密码,大大降低了哈希值密码的恢复时间。
参照图5,示出了本发明哈希值密码的恢复装置第二实施例的结构示意图,该装置第二实施例是在上述装置第一实施例基础上的改进。
在该装置第二实施例中,还包括优化配置单元42,用于对系统进行优化配置,其中具体包括:
彩虹表参数优化配置子单元,用于对与彩虹表相关的参数进行优化,包括在密钥空间允许的情况下,增加每个彩虹表的彩虹链的个数和彩虹表的个数。
其中,设每个彩虹表中的彩虹链个数为
Figure 172965DEST_PATH_IMAGE004
,彩虹链长度为,彩虹表个数为
Figure 982975DEST_PATH_IMAGE008
,密码空间总大小为
对于一个
Figure 305689DEST_PATH_IMAGE012
的彩虹表,其查找成功率为:
Figure 2013103262251100002DEST_PATH_IMAGE022
,其中(
Figure 797850DEST_PATH_IMAGE016
Figure 39476DEST_PATH_IMAGE018
),
Figure 376916DEST_PATH_IMAGE008
个表的查找成功率满足如下方程:
Figure 20387DEST_PATH_IMAGE020
;同时结合GPU的块内线程数的约束(块内线程数为2的幂),可确定
Figure 355553DEST_PATH_IMAGE006
=4096。因此,在密码空间允许的情况下,增大
Figure 146792DEST_PATH_IMAGE004
更容易提高彩虹表的性能。
截短函数优化配置子单元,用于对截短函数进行优化,主要是为了保证截短函数值在N上的均匀分布。其中:
设置截短函数为
Figure 785901DEST_PATH_IMAGE002
其中,Si,j(P)为第i条彩虹链第j位置的初始节点值,1≤i≤c, 1≤j≤l, c为每张彩虹表的彩虹链的个数,l为彩虹链的长度,N为密码空间大小。
GPU计算轮数优化配置子单元,用于对GPU的计算轮数进行优化。
由于GPU的显存大小的限制,需要将彩虹表分解到GPU可完成有效计算的最大单位(块内线程数thread×块数block)逐一完成。从数据传输效率和GPU并行计算能力的角度来考虑,应尽量扩大每次SP(流处理器)传输的数量,以避免通讯开销。
因此,在GPU设备计算功能级的主版本号分别为1,2,3的情况下,配置块中线程数分别为256,768,448,块数分别为设备上处理器数量的3倍,3倍,16倍。
进一步的,将介绍本发明哈希值密码的恢复装置第三实施例,该装置第三实施例是在上述装置第二实施例基础上的改进。
在该装置第三实施例中,彩虹表生成单元43具体包括:
第一链首值生成子单元,用于随机生成一条彩虹链链首值T1
第一计算子单元,用于对T1进行哈希运算得到HT1
第二计算子单元,用于对HT1进行截短函数运算得到RHT1
第一链尾值生成子单元,用于将RHT1重复进行预定次数的哈希运算和截短函数运算,得到彩虹链链尾值,其中,预定次数为配置的彩虹链的长度值。
第一彩虹链形成子单元,用于根据彩虹链链首值和彩虹链链尾值形成彩虹链并保存于彩虹表。
第一核函数设置子单元,根据GPU的计算能力设置执行彩虹链生成核函数中的块数(block)和块中的线程数(thread)。
其中,GPU的计算能力是指GPU中的运算平台(CUDA,Compute Unified Device Architecture)的计算能力。
第二链首值生成子单元,用于随机生成多个彩虹链链首值并保存于GPU显存中。
第二链尾值生成子单元,用于调度彩虹链生成核函数的线程,对多个彩虹链链首值并行进行预定次数的哈希运算和截短函数运算,得到与多个彩虹链链首值对应的彩虹链链尾值。其中,预定次数为配置的彩虹链的长度值。
第二彩虹链形成子单元,用于根据多个彩虹链链首值及其对应的彩虹链链尾值分别形成彩虹链并保存于彩虹表。
当通过彩虹表生成单元43生成彩虹表后,判断彩虹表的个数是否已经达到系统初始化信息中配置的需生成的彩虹表的个数(tablecount),如果判断结果为否,则重复通过彩虹表生成单元43生成彩虹表,直至彩虹表的个数与配置的tablecount相同。
在彩虹表生成单元43生成了所有需要的彩虹表之后,将彩虹表根据所有彩虹链链尾的大小按顺序依次存储于彩虹表文件中。
进一步的,参照图6,示出了本发明哈希值密码的恢复装置第四实施例的中的第一哈希值密码恢复单元的结构示意图,该装置第四实施例是在上述装置第三实施例基础上的改进。
在该装置第四实施例中,第一哈希值密码恢复单元49具体包括:
第二核函数设置子单元491,用于根据GPU的计算能力设置执行预计算核函数需分配的块数和块中的线程数及在线分析核函数需分配的块数和块中的线程数。
第一链首节点值生成子单元492,用于用于将所述待恢复的哈希值和各猜测位置相结合进行截短函数运算后得到对应的各链首节点值Spos(P)。
其中,猜测位置为从彩虹链链首位置至彩虹链链尾位置前移两个节点之间的位置。
第一链尾节点值生成子单元493,用于调度预计算核函数的线程,对所述各链首节点值Spos(P)并行进行从其对应的猜测位置后移一个节点至彩虹链链尾位置前移两个节点的彩虹链节点值的还原计算,得到所述各Spos(P)对应的链尾节点值Epos(P)。
第一链首节点值获取子单元494,用于根据二分查找法在彩虹表中查找链尾节点值与各Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P)。
第二链尾节点值生成子单元495,用于调度在线分析阶段核函数的线程,对各Sj(P)并行进行从彩虹链链首位置至Ij(P)前移一个节点的彩虹链节点值的还原计算,得到各Sj(P)对应的链尾节点值Ej(P)。
第一预判定哈希值生成子单元496,用于任取一个Ej(P)进行哈希运算得到第一预判定哈希值;
第一密码存储子单元497,用于当第一预判定哈希值与待恢复哈希值相同时,将与第一预判定哈希值对应的密码进行存储。
进一步的,将介绍本发明哈希值密码的恢复装置第五实施例,该装置第五实施例是在上述装置第四实施例基础上的改进。
在该装置第五实施例中,还包括第二哈希值密码恢复单元,用于当判断单元47的判断结果为否时,即如果不能利用GPU对该待恢复的哈希值进行密码恢复时,则利用CPU对该待恢复的哈希值进行密码恢复,具体包括:
第二链首节点值生成子单元,用于将待恢复哈希值和猜测位置相结合进行截短函数运算后得到链首节点值Spos(P)。
第三链尾节点值生成子单元,用于将Spos(P)进行从猜测位置后移一个节点至彩虹链链尾位置前移两个节点的节点数次的哈希运算和截短函数运算得到的链尾节点值Epos(P)。
第二链首节点值获取子单元,用于根据二分查找法在彩虹表中查找链尾节点值与Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P)。
彩虹链元素获取子单元,用于根据Sj(P)和Ij(P)分别获得一个彩虹链链首元素值Sjs(P)及其在彩虹链上的相应位置元素值Ijs(P);
预判定值生成子单元,用于根据Sjs(P)进行自彩虹链链首位置至Ijs(P)前移一个节点的的节点数次的哈希运算和截短函数运算后得到预判定值。   
第二预判定哈希值生成子单元,用于将预判定值进行哈希运算后得到相应的第二预判定哈希值。
第二密码存储子单元,用于当第二预判定哈希值与待恢复的哈希值相同时,将与第二预判定哈希值对应的密码进行存储。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种哈希值密码的恢复方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种哈希值密码的恢复方法,其特征在于,包括:
配置系统初始化信息;
利用CPU和GPU分别生成彩虹表并按顺序存储于彩虹表文件中;
在彩虹表文件中的任一彩虹表与预设彩虹表的参数相匹配的情况下,从哈希值文件中获取一个待恢复的哈希值;
判断能否利用GPU对该待恢复的哈希值进行密码恢复;
如果判断结果为是,则利用GPU对该待恢复的哈希值进行密码恢复,直至恢复完成哈希值文件中所有待恢复的哈希值的密码;
其中,所述系统初始化信息包括哈希算法类型,字符集,字符集文件,彩虹链的长度,每个彩虹表的彩虹链的个数,需生成的彩虹表的个数,初始彩虹表表号索引,密码口令的最小长度和最大长度,生成的彩虹表存储路径,待恢复的哈希值文件和恢复结果文件。
2.如权利要求1所述的方法,其特征在于:
利用CPU生成彩虹表的步骤,具体包括:
随机生成一条彩虹链链首值T1
对所述T1进行哈希运算得到HT1
对所述HT1进行截短函数运算得到RHT1
将RHT1重复进行预定次数的哈希运算和截短函数运算,得到彩虹链链尾值;
根据所述彩虹链链首值和所述彩虹链链尾值形成彩虹链并保存于彩虹表;
利用GPU生成彩虹表的步骤,具体包括:
根据GPU的计算能力设置执行彩虹链生成核函数需分配的块数和块中的线程数;
随机生成多个彩虹链链首值并保存于GPU显存中;
调度彩虹链生成核函数的线程,对所述多个彩虹链链首值并行进行预定次数的哈希运算和截短函数运算,得到与其对应的彩虹链链尾值;
根据所述多个彩虹链链首值及其对应的彩虹链链尾值分别形成彩虹链并保存于彩虹表。
3.如权利要求1所述的方法,其特征在于,所述利用GPU对该待恢复的哈希值进行密码恢复的步骤,具体包括:
根据GPU的计算能力设置执行预计算核函数和在线分析核函数各自需分配的块数和块中的线程数;
将所述待恢复的哈希值和各猜测位置相结合进行截短函数运算后得到对应的各链首节点值Spos(P);
调度预计算核函数的线程,对所述各Spos(P)并行进行从其对应的猜测位置后移一个节点至彩虹链链尾位置前移两个节点的彩虹链节点值的还原计算,得到所述各Spos(P)对应的链尾节点值Epos(P);
根据二分查找法在彩虹表中查找链尾节点值与所述各Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P);
调度在线分析阶段核函数的线程,对所述各Sj(P)并行进行从彩虹链链首位置至Ij(P)前移一个节点的彩虹链节点值的还原计算,得到所述各Sj(P)对应的链尾节点值Ej(P);
任取一个Ej(P)进行哈希运算得到第一预判定哈希值;
如果所述第一预判定哈希值与待恢复哈希值相同,则密码恢复成功,将与所述第一预判定哈希值对应的密码进行存储;
其中,猜测位置为从彩虹链链首位置至彩虹链链尾位置前移两个节点之间的位置。
4.如权利要求1所述的方法,其特征在于,还包括:如果不能利用GPU对该待恢复的哈希值进行密码恢复,则利用CPU对该待恢复的哈希值进行密码恢复,具体包括:
将待恢复哈希值和猜测位置相结合进行截短函数运算后得到链首节点值
Spos(P);     将所述Spos(P)进行从猜测位置后移一个节点至彩虹链链尾位置前移两个节点的节点数次的哈希运算和截短函数运算得到的链尾节点值Epos(P);
根据二分查找法在彩虹表中查找链尾节点值与所述Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P); 
根据Sj(P)和Ij(P)分别获得一个彩虹链链首元素值Sjs(P)及其在彩虹链上的相应位置元素值Ijs(P);
根据Sjs(P)进行自彩虹链链首位置至Ijs(P)前移一个节点的节点数次的哈希运算和截短函数运算后得到预判定值;   
将所述预判定值进行哈希运算后得到相应的第二预判定哈希值;
如果所述第二预判定哈希值与待恢复的哈希值相同,则密码恢复成功,将与所述第二预判定哈希值对应密码进行存储;
其中,所述猜测位置为彩虹链链首位置至彩虹链链尾位置前移两个节点之间的位置。
5.如权利要求1所述的方法,其特征在于,在配置系统初始化信息的步骤之后,还包括:
对系统进行优化配置,包括对与彩虹表相关的参数进行优化,对截短函数进行优化和对GPU的计算轮数进行优化,其中,
所述对与彩虹表相关的参数进行优化具体为:在密码空间允许的情况下,增加每个彩虹表中的彩虹链的个数和彩虹表的个数;
所述对截短函数进行优化具体为:
设置截短函数为                                                
Figure 2013103262251100001DEST_PATH_IMAGE001
其中,Si,j(P)为第i条彩虹链第j位置的初始节点值,1≤i≤c, 1≤j≤l, c为每张彩虹表的彩虹链的个数,l为彩虹链的长度,N为密码空间大小;
所述对GPU的计算轮数进行优化,具体为:
在GPU设备计算功能级的主版本号分别为1,2,3的情况下,则块中线程数分别为256,768,448,配置块数分别为设备上处理器数量的3倍,3倍,16倍。
6.一种哈希值密码的恢复装置,其特征在于,包括:
初始化配置单元,用于配置系统初始化信息;其中,所述系统初始化信息包括哈希算法类型,字符集,字符集文件,彩虹链的长度,每个彩虹表的彩虹链的个数,需生成的彩虹表的个数,初始彩虹表表号索引,密码口令的最小长度和最大长度,生成的彩虹表存储路径,待恢复的哈希值文件和恢复结果文件;
彩虹表生成单元,用于利用CPU和GPU分别生成彩虹表并按顺序存储于彩虹表文件中;
待恢复哈希值获取单元,用于在彩虹表文件中的任一彩虹表与预设彩虹表的参数相匹配的情况下,从哈希值文件中获取一个待恢复的哈希值;
判断单元,用于判断能否利用GPU对该待恢复的哈希值进行密码恢复;
第一哈希值密码恢复单元,用于利用GPU对该待恢复的哈希值进行密码恢复,直至恢复完成哈希值文件中所有待恢复的哈希值的密码。
7.如权利要求6所述的装置,其特征在于,所述彩虹表生成单元具体包括:
第一链首值生成子单元,用于随机生成一条彩虹链链首值T1
第一计算子单元,用于对所述T1进行哈希运算得到HT1
第二计算子单元,用于对所述HT1进行截短函数运算得到RHT1
第一链尾值生成子单元,用于将RHT1重复进行预定次数的哈希运算和截短函数运算,得到彩虹链链尾值;
第一彩虹链形成子单元,用于根据所述彩虹链链首值和所述彩虹链链尾值形成彩虹链并保存于彩虹表;
第一核函数设置子单元,用于根据GPU的计算能力设置执行彩虹链生成核函数需分配的块数和块中的线程数;
第二链首值生成子单元,用于随机生成多个彩虹链链首值并保存于GPU显存中;
第二链尾值生成子单元,用于调度彩虹链生成核函数的线程,对所述多个彩虹链链首值并行进行预定次数的哈希运算和截短函数运算,得到与其对应的彩虹链链尾值;
第二彩虹链形成子单元,用于根据所述多个彩虹链链首值及其对应的彩虹链链尾值分别形成彩虹链并保存于彩虹表。
8.如权利要求6所述的装置,其特征在于,所述第一哈希值密码恢复单元具体包括:
第二核函数设置子单元,用于根据GPU的计算能力设置执行预计算核函数和在线分析核函数各自需分配的块数和块中的线程数;
第一链首节点值生成子单元,用于将所述待恢复的哈希值和各猜测位置相结合进行截短函数运算后得到对应的各链首节点值Spos(P);
第一链尾节点值生成子单元,用于调度预计算核函数的线程,对所述各链首节点值Spos(P)并行进行从其对应的猜测位置后移一个节点至彩虹链链尾位置前移两个节点的彩虹链节点值的还原计算,得到所述各Spos(P)对应的链尾节点值Epos(P);
第一链首节点值获取子单元,用于根据二分查找法在彩虹表中查找链尾节点值与所述各Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P);
第二链尾节点值生成子单元,用于调度在线分析阶段核函数的线程,对所述各Sj(P)并行进行从彩虹链链首位置至Ij(P)前移一个节点的彩虹链节点值的还原计算,得到所述各Sj(P)对应的链尾节点值Ej(P);
第一预判定哈希值生成子单元,用于任取一个Ej(P)进行哈希运算得到第一预判定哈希值;
第一密码存储子单元,用于当所述第一预判定哈希值与待恢复哈希值相同时,将与此所述第一预判定哈希值对应的密码进行存储;
其中,猜测位置为从彩虹链链首位置至彩虹链链尾位置前移两个节点之间的位置。
9.如权利要求6所述的装置,其特征在于,还包括第二哈希值密码恢复单元,用于当不能利用GPU对该待恢复的哈希值进行密码恢复,则利用CPU对该待恢复的哈希值进行密码恢复,具体包括:
第二链首节点值生成子单元,用于将待恢复哈希值和猜测位置相结合进行截短函数运算后得到链首节点值Spos(P);
第三链尾节点值生成子单元,用于将所述Spos(P)进行从猜测位置后移一个节点至彩虹链链尾位置前移两个节点的节点数次的哈希运算和截短函数运算得到的链尾节点值Epos(P);
第二链首节点值获取子单元,用于根据二分查找法在彩虹表中查找链尾节点值与所述Epos(P)相同的彩虹链,并获取该些彩虹链的各链首节点值Sj(P)及根据各Epos(P)、各Sj(P)和猜测位置确定的在彩虹链上的各相应位置值Ij(P); 
彩虹链元素获取子单元,用于根据Sj(P)和Ij(P)分别获得一个彩虹链链首元素值Sjs(P)及其在彩虹链上的相应位置元素值Ijs(P);
预判定值生成子单元,用于根据Sjs(P)进行自彩虹链链首位置至Ijs(P)前移一个节点的节点数次的哈希运算和截短函数运算后得到预判定值;   
第二预判定哈希值生成子单元,用于将所述预判定值进行哈希运算后得到相应的第二预判定哈希值;
第二密码存储子单元,用于当所述第二预判定哈希值与待恢复的哈希值相同时,将与所述第二预判定哈希值对应的密码进行存储;
其中,猜测位置为从彩虹链链首位置至彩虹链链尾位置前移两个节点之间的位置。
10.如权利要求6所述的装置,其特征在于,还包括优化配置单元,用于对系统进行优化配置,具体包括:
彩虹表参数优化配置子单元,用于对与彩虹表相关的参数进行优化,包括在密钥空间允许的情况下,增加每个彩虹表的彩虹链的个数和彩虹表的个数;
截短函数优化配置子单元,用于对截短函数进行优化,包括:
设置截短函数为
Figure 611183DEST_PATH_IMAGE001
其中,Si,j(P)为第i条彩虹链第j位置的初始节点值,1≤i≤c, 1≤j≤l, c为每个彩虹表中的彩虹链的个数,l为彩虹链的长度,N为密码空间大小;
GPU计算轮数优化配置子单元,用于对GPU的计算轮数进行优化,包括在GPU设备计算功能级的主版本号分别为1,2,3的情况下,配置块中线程数分别为256,768,448,块数分别为设备上处理器数量的3倍,3倍,16倍。
CN2013103262251A 2013-07-31 2013-07-31 哈希值密码的恢复方法和装置 Pending CN103400072A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2013103262251A CN103400072A (zh) 2013-07-31 2013-07-31 哈希值密码的恢复方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2013103262251A CN103400072A (zh) 2013-07-31 2013-07-31 哈希值密码的恢复方法和装置

Publications (1)

Publication Number Publication Date
CN103400072A true CN103400072A (zh) 2013-11-20

Family

ID=49563695

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2013103262251A Pending CN103400072A (zh) 2013-07-31 2013-07-31 哈希值密码的恢复方法和装置

Country Status (1)

Country Link
CN (1) CN103400072A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103714300A (zh) * 2014-01-06 2014-04-09 武汉虹旭信息技术有限责任公司 基于分布式gpu和彩虹表的加密分析系统及其方法
CN104732701A (zh) * 2015-04-08 2015-06-24 鹰潭嘉坤云计算科技有限公司 一种监控消防报警信息的方法和系统
CN105933120A (zh) * 2016-04-06 2016-09-07 清华大学 一种基于Spark平台的口令哈希值恢复方法和装置
CN106712928A (zh) * 2016-12-13 2017-05-24 云南电网有限责任公司电力科学研究院 基于大数据彩虹表的解密方法和装置
CN108038382A (zh) * 2017-10-18 2018-05-15 北京丁牛科技有限公司 基于cpu-gpu架构的彩虹链表的处理方法及系统
CN108416208A (zh) * 2018-02-05 2018-08-17 深圳大普微电子科技有限公司 一种破解密码的方法、主机设备及存储设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783046B1 (en) * 2007-05-23 2010-08-24 Elcomsoft Co. Ltd. Probabilistic cryptographic key identification with deterministic result
CN103049709A (zh) * 2013-01-22 2013-04-17 上海交通大学 基于生成元扩展彩虹表的密码恢复系统及其恢复方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783046B1 (en) * 2007-05-23 2010-08-24 Elcomsoft Co. Ltd. Probabilistic cryptographic key identification with deterministic result
CN103049709A (zh) * 2013-01-22 2013-04-17 上海交通大学 基于生成元扩展彩虹表的密码恢复系统及其恢复方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王小鉴等: "基于规约函数数量裁减的彩虹表技术改进", 《计算机工程》, vol. 39, no. 7, 15 July 2013 (2013-07-15) *
邹航等: "基于GPU加速的彩虹表分析MD5哈希密码", 《重庆理工大学学报(自然科学)》, vol. 27, no. 7, 15 July 2013 (2013-07-15), pages 61 - 66 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103714300A (zh) * 2014-01-06 2014-04-09 武汉虹旭信息技术有限责任公司 基于分布式gpu和彩虹表的加密分析系统及其方法
CN104732701A (zh) * 2015-04-08 2015-06-24 鹰潭嘉坤云计算科技有限公司 一种监控消防报警信息的方法和系统
CN105933120A (zh) * 2016-04-06 2016-09-07 清华大学 一种基于Spark平台的口令哈希值恢复方法和装置
CN106712928A (zh) * 2016-12-13 2017-05-24 云南电网有限责任公司电力科学研究院 基于大数据彩虹表的解密方法和装置
CN108038382A (zh) * 2017-10-18 2018-05-15 北京丁牛科技有限公司 基于cpu-gpu架构的彩虹链表的处理方法及系统
CN108416208A (zh) * 2018-02-05 2018-08-17 深圳大普微电子科技有限公司 一种破解密码的方法、主机设备及存储设备

Similar Documents

Publication Publication Date Title
CN104270247B (zh) 适用于量子密码系统的高效泛Hash函数认证方法
CN103400072A (zh) 哈希值密码的恢复方法和装置
CN107276744B (zh) 一种文件存储加密方法及系统
JP2020074039A (ja) データを暗号化する方法およびシステム
US8345861B2 (en) Sharing a secret using polynomial division over GF(Q)
CN108833095B (zh) 区块链中的行为验证方法、节点、系统及电子设备
CN106961427B (zh) 一种基于5g通信标准的密文数据搜索方法
US20190140819A1 (en) System and method for mekle puzzles symeteric key establishment and generation of lamport merkle signatures
JP6575532B2 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
CN109274484B (zh) 一种对数据进行保密增强的方法及量子密钥分发终端
CN105373739B (zh) 一种基于超混沌系统的量子图像加密方法
CN114175572A (zh) 利用拟群运算对加密数据实行相等和小于运算的系统和方法
JP2008513811A (ja) 計算変換の方法及びシステム
US20170033929A1 (en) Cryptographic hash generation system
CN110175169A (zh) 一种加密数据去重方法、系统及相关装置
EP2689554B1 (en) Method and system for obtaining a result of a joint public function for a plurality of parties
Hussam New lightweight hybrid encryption algorithm for cloud computing (LMGHA-128bit) by using new 5-D hyperchaos system
Li et al. Watermarking protocol for deep neural network ownership regulation in federated learning
Krishnamoorthy et al. Implementation and management of cloud security for industry 4. O-data using hybrid elliptical curve cryptography
CN105933120A (zh) 一种基于Spark平台的口令哈希值恢复方法和装置
CN102542070B (zh) 基于随机函数的单向哈希函数构造方法
CN103873239A (zh) 基于偶数公钥密码体制应用的偶数素数对的快速生成方法
Bhardwaj et al. HS1-RIV: Improved Efficiency for Authenticated Encryption
CN109743156A (zh) 一种分组加解密方法和装置
Mahalanobis et al. An improved guess-and-determine attack on the A5/1 stream cipher

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20131120