本发明涉及数据解密技术领域,尤其涉及一种数据解密方法。
背景技术:
在数据的传输过程中通常要进行数据加密,因此在传输的终端有需要运用密钥解密。现在大部分的数据传输至终端后,其数据的解密一般在传输过程中利用公钥基础设施(pki)进行解密。但是在用户个人计算机(pc)上的恶意软件的出现,使得对于用户是否连接到他所希望与其进行交互的服务器出现不确定性。人们已经知晓的用以防止敌意攻击的方法,例如,数据传输之前进行加密处理,传输之后再根据终端的请求发送密钥,但是当前密钥的单一加密以及其匹配的密钥的单一性,且传输过程中也容易被获取并破解,因此有必要发明一种较为复杂的加密方法,因加密方法的复杂性,其解密方法也极其重要。
技术实现要素:
本发明针对现有方式的缺点,提出一种数据解密方法,用以解决现有技术存在的上述问题。
根据本发明的一个方面,提供了一种数据解密方法,至少包括如下步骤:
接收数据包,所述数据包至少包括第一数据,所述第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,所述第二数据由第三数据经十六进制编码转换而成,所述第三数据至少包括指纹数据、身份证数据、数字密码和mf卡数据中的至少一种;
请求获取与所述数据包相匹配的密钥;
获取与所述数据包相匹配的密钥;
使用与所述数据包匹配的密钥解密所述数据包。
进一步的,所述第二数据由第三数据经十六进制编码转换而成,是指:
当所述第三数据为指纹数据时,采用498位十六进制的编码规则将所述指纹数据转为十六进制编码的第二数据,所述第二数据包括两个249位十六进制编码的子数据包,两个所述子数据包带有不同的编号;
所述密钥至少包括第一密钥,所述第一密钥为第二数据及第二数据中子数据包的编号。
进一步的,所述将第一数据经十六进制编码转为第二数据,是指:
当所述第三数据为指纹数据以外的数据时,采用12位十六进制的编码规则分别将所述指纹数据以外的数据转为十六进制编码的第二数据,所述第二数据相应每一身份证数据、数字密码和mf卡数据均分别包括两个8位十六进制编码的子数据包,且第二数据中的每个数据包带有不同的标号;
所述密钥至少包括第二密钥,所述第二密钥为第二数据及第二数据中子数据包的编号。
进一步的,所述硬件加密机制采用椭圆曲线密码加密机制,所述软件加密机制采用基于np完全问题的后量子密钥分配算法;
所述密钥至少包括第三密钥,所述第三密钥为椭圆曲线密码加密机制和后量子密钥分配算法组合加密后产生的密钥。
进一步的,所述第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,所述第一数据由第二数据经硬件加密机制和软件加密机制对所述第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
所述硬件加密机制为椭圆曲线密码加密机制,所述软件加密机制为基于np完全问题的后量子密钥分配算法;
所述密钥至少包括第三密钥,所述第三密钥为椭圆曲线密码加密机制和后量子密钥分配算法对所述第二数据进行两次加密后产生的密钥。
进一步的,所述第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,所述第一数据由第二数据经硬件加密机制和软件加密机制对所述第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
所述硬件加密机制为椭圆曲线密码加密机制,所述软件加密机制为基于量子通信的密钥分配算法;
所述密钥至少包括第四密钥,所述第四密钥为椭圆曲线密码加密机制和密钥分配算法对所述第二数据进行两次加密后产生的密钥。
进一步的,所述第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,所述第一数据由第二数据经硬件加密机制和软件加密机制对所述第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
所述硬件加密机制为椭圆曲线密码加密机制,所述软件加密机制为rc4算法;
所述密钥至少包括第五密钥,所述第五密钥为椭圆曲线密码加密机制和rc4算法组合加密后产生的密钥。
进一步的,所述第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,所述第一数据由第二数据经硬件加密机制和软件加密机制对所述第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
所述硬件加密机制为椭圆曲线密码加密机制,所述软件加密机制为tls协议;
所述密钥至少包括第六密钥,所述第六密钥为椭圆曲线密码加密机制和tls协议对所述第二数据进行两次加密后产生的密钥。
进一步的,所述第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,所述第一数据由第二数据经硬件加密机制和软件加密机制对所述第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
所述硬件加密机制为椭圆曲线密码加密机制,所述软件加密机制为dtls协议;
所述密钥至少包括第七密钥,所述第七密钥为椭圆曲线密码加密机制和dtls协议对所述第二数据进行两次加密后产生的密钥。
进一步的,所述第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,所述第一数据由第二数据经硬件加密机制和软件加密机制对所述第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
所述硬件加密机制为椭圆曲线密码加密机制,所述软件加密机制为aes-192算法、3des算法和sha-3算法的组合,所述aes-192算法、3des算法和sha-3算法的组合是指,在加密数据时,aes-192算法、3des算法和sha-3算法对数据进行三次加密以获取加密的数据包;
所述密钥至少包括第八密钥,所述第八密钥为aes-192算法、3des算法与sha-3的组合和椭圆曲线密码加密机制对第二数据进行两次加密后产生的密钥。
进一步的,所述第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,所述第一数据由第二数据经硬件加密机制和软件加密机制对所述第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
所述硬件加密机制为椭圆曲线密码加密机制,所述软件加密机制为aes-256算法和国密sm4算法的组合,所述aes-256算法和sm4算法的组合是指,在加密数据时,aes-256算法和sm4算法对数据进行两次加密以获取加密的数据包;
所述密钥至少包括第九密钥,所述第九密钥为aes-256算法与国密sm4算法的组合和椭圆曲线密码加密机制对第二数据进行两次加密后产生的密钥。
与现有技术相比,本发明的有益效果是:
1、通过接收数据包,该数据包为指纹数据、身份证数据、数字密码和mf卡数据中的至少一种依次经过十六进制编码转换及硬件加密机制和软件加密机制的组合加密,在通过获取匹配的密钥并使用密钥解密数据包的过程,不仅能够获取原数据,还增加了被破解的难度,从而能够保证数据的安全性;
2、第三数据的类型不同时,第三数据的类型为指纹数据、身份证数据、数字密码和mf卡数据,通过不同的编码规则将第三数据转化为第二数据,再加密传输至终端,终端通过请求这一过程的密钥再解密的方式可增加数据破译的难度以增加数据的安全性;
3、硬件加密机制和软件加密机制的组合加密后的密钥也进一步确保了数据的安全;
4、软件加密机制通过基于np完全问题的后量子密钥分配算法对第二数据进行加密以获取加密数据的过程,因数据在加密时进行了重排,且一旦泄露就报警的特性,即使密钥被窃取也难以使用,解密时必须依据密钥,因此能够增强密码的安全性;
5、软件加密机制还可通过基于量子通信的密钥分配算法对第二数据进行加密以获取加密数据的过程可以抗击量子计算机破解,在解密时必须依据密钥,从而保证了数据的安全性;
6、因rc4算法密钥长度是可变的,在一定程度上可保证通信的安全性;
7、通过采用tls协议或dtls协议对第二数据进行加密和解密以获取加密数据的过程,因tls协议或dtls协议的协议安全性可以保障网络安全通信;
8、采用aes-192算法、3des算法和sha-3算法及dtls协议对第二数据进行加密和解密以获取加密数据的过程,因aes-192算法、3des算法和sha-3算法能够抵抗穷举性破解,且方便易行,dtls协议还能进一步保障传输的安全性,能够在一定程度上保障密钥数据的安全性;
9、采用aes-256算法和国密sm4算法对第二数据进行加密再解密以获取数据的过程,因aes-256算法和国密sm4算法抗攻击性较高,能够在一定程度上保障密钥数据的安全性。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例中的一种数据解密方法流程图;
图2为本发明实施例中的椭圆曲线解密和解密流程图;
图3为本发明实施例的基于np完全问题的后量子密钥分配算法流程图;
图4为本发明实施例中的哈希树示意图;
图5为本发明实施例中的哈希树枝干示意图;
图6为本发明实施例中的tls协议运作流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分例,实施而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
实施例
如图1所示,提供了本发明实施例的一种数据解密方法,该方法至少包括步骤s101-s103:
s101接收数据包,数据至少包括第一数据,第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,第二数据由第三数据经十六进制编码转换而成,第三数据至少包括指纹数据、身份证数据、数字密码和/或mf卡数据的一种或多种;
第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,第一数据由第二数据经硬件加密机制和软件加密机制对第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;硬件加密机制和软件加密机制对第二数据进行两次加密的顺序为硬件加密机制和软件加密机制,或者,软件加密机制和硬件加密机制。
s102请求获取并获取与数据包相匹配的密钥;
s103获取与数据包相匹配的密钥,使用该密钥解密该数据包。
在步骤s101中,第二数据由第三数据经十六进制编码转换而成的过程,是指:
当第三数据为指纹数据时,采用498位十六进制的编码规则将指纹数据转为十六进制编码的第二数据;第二数据包括两个249位十六进制编码的子数据包,两个子数据包带有不同的编号;
则,密钥至少包括第一密钥,该第一密钥为第二数据及第二数据中子数据包的编号。
进一步的,当第三数据为指纹数据以外的数据时,采用12位十六进制的编码规则分别将指纹数据以外的数据转为十六进制编码的第二数据,所述第二数据相应每一身份证数据、数字密码和mf卡数据均分别包括两个8位十六进制编码的子数据包,且第二个数据包中的每个数据包带有不同的标号;
则,密钥至少包括第二密钥,该第二密钥为第二数据及第二数据中子数据包的编号。
具体的,表述如下:
当第一数据为身份证数据时,第二数据中的每一身份证数据在第二数据中均对应两个8位十六进制编码的数据包,两个数据包带有不同的编号;
和/或当第一数据为数字密码,第二数据中的每一数字密码在第二数据中均对应两个8位十六进制编码的数据包,两个数据包带有不同的编号;
和/或当第一数据为mf卡数据时,第二数据中的每一mf数据在第二数据中均对应包括两个8位十六进制编码的数据包,两个数据包带有不同的编号;
第二数据包中的数据包的个数为偶数个,且每个数据包的编号都不同,当传输被截获时,因不知道配对的编号,也在一定程度上增加了暴力破解的难度,进一步增加了数据通信的安全性。
在步骤s101中,硬件加密机制只有一种,但是软件加密机制却有多种,因此硬件加密机制和软件加密机制的组合方式有多种,因此,与数据包匹配的密钥也有多种,分别如下所述:
进一步的,第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,第一数据由第二数据经硬件加密机制和软件加密机制对第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
硬件加密机制为椭圆曲线密码加密机制,软件加密机制为基于np完全问题的后量子密钥分配算法;
密钥至少包括第三密钥,第三密钥为椭圆曲线密码加密机制和后量子密钥分配算法对第二数据进行两次加密后产生的密钥。
椭圆曲线密码加密机制是椭圆曲线密码加密机制具体是指椭圆加密算法(ellipticcurvecryptography,ecc)是一种公钥加密体制,最初由koblitz和miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成abel加法群上椭圆离散对数的计算困难性。公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。
如图2所示,是椭圆曲线解密和解密流程图,椭圆曲线进行加密通信的过程如下:首先选定一个合适加密的椭圆曲线ep(a,b),并取椭圆曲线上的一点作为基点g。选择一个私有密钥k,并生成一个公开密钥k=kg。加密时,将明文编码到ep(a,b)上的一点m,并产生一个随机整数r(r<n)。计算点c1=m+rk,c2=rgo将c1和c2存入密文。解密时,从密文中读出c1和c2,计算c1-kc2,根据c1-kc2=m+rk-k(rg)=m,解得的结果就是点m,即明文。部分程序如下(略过中间部分):
基于np完全问题的后量子密钥分配算法如图3所示:本算法需要以量子通信为基础,电光调制器是利用某些电光晶体电光效应制成的调制器。电光效应即当把电压加到电光晶体上时,电光晶体的折射率将发生变化,结果引起通过该晶体的光波特性的变化,实现对光信号的相位、幅度、强度以及偏振状态的调制。
密钥产生器通过产生一系列随机数,改变光信号,让光信号携带上该随机数信息。密钥随机重排序:使用随机重排序算法。算法采用基于时间的重排序方法,按发送和估算接收时刻,以及根据时刻哈希的重排方式定义表,一个表项是1280位的数字,由该数字决定具体重排方法。重排方式定义表就是预想定义的定长的数字表格,该表格可用更换硬件芯片的方法修改。按照时刻哈希到该表格的某一行。各个行的数字不同。按发送和估算接收时刻,以及根据时刻哈希,用该哈希值查表,一个表项是1280位的数字,这个数字就决定了具体的重排方法。重排方式定义表就是预想定义的定长的数字表格,该表格可用更换硬件芯片的方法修改。按照时刻哈希到该表格的某一行。各个行的数字不同。按发送和估算接收时刻,以及根据时刻哈希,用该哈希值查表,一个表项是1280位的数字,这个数字就决定了具体的重排方法。
密钥通过量子通信通道从发送端传输到接收端,如果中间被偷窥者测量,则量子状态会发生改变,在接收端将不能恢复密钥。而偷窥者得到的信息由于是被随机重排序的,所以偷窥者也不能获得原信息。即便偷窥者偷窥了多次,也不能发现规律,所以不能破解。此外,由于接收端发现信息泄漏,将会发出报警信号,保证系统安全。
接收端也保存一个同样的重排方式定义表,放在次序及密钥恢复器中,当接收端接收到光信号后,用光信号中传递的哈希值先查表,再按照重拍方式定义表对接收信号重排序。并把恢复顺序的密钥和自己的密钥放在一起验证,如果验证通过,则表示信号没有破坏。可以开始测量光信号,获取信息。
进一步的,第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,第一数据由第二数据经硬件加密机制和软件加密机制对第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
硬件加密机制为椭圆曲线密码加密机制,软件加密机制为rc4算法;
密钥至少包括第五密钥,第五密钥为椭圆曲线密码加密机制和rc4算法组合加密后产生的密钥。
以np问题对应的量子计算np问题为基础设计密码系统。我们采用的方法是基于哈希算法签名。具体方法是:merkle签名方案具体实现。merkle签名方案是经过学术界论证,可以抗击量子计算机破解的算法。该算法主要分三个步骤:
1.生成密钥:生成密钥的方法是采用如图4所示的哈希树。哈希树是通过计算公钥yi的哈希值h(yi),然后再继续向上计算h(yi)的哈希值,直到只剩下一个节点,如图5所示。哈希树节点数值对就可以作为密钥。
2.生成签名:签名者挑选一个密钥对(xi,yi),用一次性签名方案把信息m签名,再把增加额外的信息到m,证明m确实是被该密钥签名过的数据。如下图所示auth[0],auth[1]。
3.签名验证:接收者收到m信息后,用公钥yi来验证m是否被一次性验证方案签名过。如果验证通过,则接收者计算a0=h(yi),a1=h(a0|auth0),a2=h(a1|auth1)…an,如果所有的ai都与公钥符合,则签名是有效的。
进一步的,第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,第一数据由第二数据经硬件加密机制和软件加密机制对第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
硬件加密机制为椭圆曲线密码加密机制,软件加密机制为tls协议;
密钥至少包括第六密钥,第六密钥为椭圆曲线密码加密机制和tls协议对第二数据进行两次加密后产生的密钥。
rc4于1987年提出,是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥),rc4的处理方式十字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密。
rc4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特),在如今技术支持的前提下,当密钥长度为128比特时,用暴力法搜索密钥已经不太可行,所以可以预见rc4的密钥范围任然可以在今后相当长的时间里抵御暴力搜索密钥的攻击。实际上,如今也没有找到对于128bit密钥长度的rc4加密算法的有效攻击方法。解密程序范例如下所示:
程序实现时,需要注意的是,状态向量数组s和临时向量数组t的类型应设为unsignedchar,而不是char。因为在一些机器下,将char默认做为signedchar看待,在算法中计算下标i,j的时候,会涉及char转int,如果是signed的char,那么将char的8位拷贝到int的低8位后,还会根据char的符号为,在int的高位补0或1。由于密钥是随机产生的,如果遇到密钥的某个字节的高位为1的话,那么计算得到的数组下标为负数,就会越界。程序运行示例:
进一步的,第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,第一数据由第二数据经硬件加密机制和软件加密机制对第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
硬件加密机制为椭圆曲线密码加密机制,软件加密机制为dtls协议;
密钥至少包括第七密钥,第七密钥为椭圆曲线密码加密机制和dtls协议对第二数据进行两次加密后产生的密钥。
tls协议的设计目标是保证数据的机密性和完整性;因此在tls协议中包含了3类算法:对称加密算法(保证机密性),数据签名算法(保证完整性)和公钥算法(用于交换密钥)。图3所示是tls协议运作的流程图,在图中,encrytedhandshakemessage:加密的finish报文,用于验证双方协商的对称加密算法、客户端密钥。
客户端给服务器发送的finished报文:
客户端:对字符串“clientfinished”应用prf算法:md5和sha的密钥是主密钥,加密的密文是ssl握手以来所有消息的串联,生成的hash值为12byte;对生成的12byte应用hmac算法,算法的密钥是client_write_mac_secret,把计算得到的mac值添加到hash后面;如果是对称加密算法是块加密算法,那么还需要填充pad。最后用第2步中协商的对称加密算法对上述数据进行整体加密,加密密钥是前面中计算得到的client_write_key。
服务器端:首先用密钥为的client_write_key对称加密算法对数据进行解密,计算字符串“clientfinished”的mac值和客户端发送过来的12byte进行比较,相同则认为client_write_key的对称加密正确,再用client_write_mac_secret计算mac值,和客户端的数据进行比较,如果相同则认为client_write_mac_secret正确。
服务器给客户端发送的finished报文:
和客户端给服务器发送的finished报文类似,是对字符串“serverfinished”进行计算,用于验证server_write_key和server_write_mac_secret。
appdata:加密数据。
服务器端:首先根据client_write_key解密整个消息体,并对其中的实际数据部分进行hmac(密钥为client_write_mac_secret)并和客户端发送过来的mac进行比较,如果相同则认为数据完整。
客户端:首先根据server_write_key解密整个消息体,并对其中的实际数据部分进行hmac(密钥为server_write_mac_secret)并和客户端发送过来的mac进行比较,如果相同则认为数据完整。
若硬件加密机制采用椭圆曲线密码加密机制,软件加密机制采用dtls协议;则本步骤与数据包匹配的密钥至少包括第七密钥,该第七密钥为椭圆曲线密码加密机制和dtls协议组合加密后产生的。
dtls是指datagramtransportlevelsecurity,即数据报安全传输协议;其提供了udp传输场景下的安全解决方案,能防止消息被窃听、篡改、身份冒充等问题。
dtls由于网络io机制的限制,其支持的算法为tls的子集。
这里将dtls算法描述为一种算法可能并不恰当,因为一个完整的dtls过程中,所涉及的算法是很多的,比如tls_ecdhe_rsa_with_aes_128_gcm_sha256,这其中涉及的算法包括:
1密钥交换算法ecdhe_rsa,这是由ecc和dh密钥交换算法衍生出来的算法;
2动态密钥算法aes_128_gcm,用于实现数据包的加解密;
3mac算法hmac_sha256,用于创建加密数据块的摘要;
4伪随机函数prf,tls1.2定义其与mac算法一致。
进一步的,第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,第一数据由第二数据经硬件加密机制和软件加密机制对第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
硬件加密机制为椭圆曲线密码加密机制,软件加密机制为aes-256算法和国密sm4算法的组合,,aes-192算法、3des算法和sha-3算法的组合是指,在加密数据时,aes-192算法、3des算法和sha-3算法对数据进行三次加密以获取加密的数据包;则本步骤与数据包匹配的密钥至少包括第八密钥,第八密钥为aes-192算法、3des算法与sha-3的组合和椭圆曲线密码加密机制对第二数据进行两次加密后产生的密钥。
aes-192算法、3des算法和sha-3算法对数据进行三次加密的顺序为以下六种:
1、依次为aes-192算法、3des算法和sha-3算法;2、依次为aes-192算法、sha-3算法和3des算法;3、依次为3des算法、aes-192算法和sha-3算法;4、依次为3des算法、sha-3算法和aes-192算法;5、依次为sha-3算法、aes-192算法和3des算法;6、依次为sha-3算法、3des算法和aes-192算法。
aes-192
aes加密算法是密码学中的高级加密标准(advancedencryptionstandard,aes),又称rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的des,已经被多方分析且广为全世界所使用。
java实现aes加密解密
1、aes加密和解密使用java自带jar包即可,无需另外单独引入其它jar;
2、aes加密和解密使用代码:
3des
3des(或称为tripledes)是三重数据加密算法(tdea,tripledataencryptionalgorithm)块密码的通称,听到名字就知道与des加密有关,简单的理解为用des加密三次,通过增加des的密钥长度来避免暴力破解。
3des算法是指使用双长度(16字节)密钥k=(kl||kr)将8字节明文数据块进行3次des加密/解密。
3des的密钥是8个字节,但实际上只有7个用上,也就是56位。
3des是用3个或2个des密钥加密一串明文,最少112位最多168位。也就是14~21个字母或数字符号。
设ek()和dk()分别代表des算法的加密和解密过程,k代表des算法使用的密钥,m代表明文,c代表密文,则3des算法的过程可表示为:
加密:c=ek3(dk2(ek1(m)))即对明文数据进行,加密-->解密-->加密的过程,最后得到密文数据
解密:m=dk1(ek2(dk3(c)))即对密文数据进行,解密-->加密-->解密的过程,最后得到明文数据。
des的加密过程:子密钥的产生:64位密钥经过置换选择1、循环左移、置换选择2等变换,产生出16个48位长的子密钥。
初始置换ip:初始置换ip是des的第一步密码变换。初始置换的作用在于将64位明文打乱重排,并分成左右两半。
加密函数f:加密函数f是des的核心部分,由选择运算e,代替函数组s和置换运算p组成。
逆初始重换ip-1:逆初始置换ip-1是初始置换凹的逆置换。它把第十六次加密迭代的结果打乱重排,形成64位密文。至此,加密过程完全结束。
des的解密过程:由于des的运算是对和运算,所以解密和加密可共用同一个运算,只是子密钥使用的顺序不同。
des的安全性:几十年来的应用实践证明了des作为商用密码,用于其设计目标是安全的。des在总的方面是极其成功的,但同时也不可避免地存在着密钥较短、存在弱密钥等弱点和不足。
sha-3
2012年10月,美国nist选择了keccak算法作为sha-3的标准算法,keccak拥有良好的加密性能以及抗解密能力。keccak算法(读作为“ket-chak”)是guidobertoni,joandaemen,michaelpeters,andgilesvanassche的工作。sha-3的候选人在2008年10月提交。keccak采用了创新的的“海绵引擎”散列消息文本。它是快速的,在英特尔酷睿2处理器下的平均速度为12.5周期每字节。它设计简单,方便硬件实现。
keccak已可以抵御最小的复杂度为2n的攻击,其中n为散列的大小。它具有广泛的安全边际。
下面是sha3-224、sha3-256、sha3-384、sha3-512测试代码:
进一步的,第一数据由第二数据经硬件加密机制和软件加密机制的组合加密而成,是指,第一数据由第二数据经硬件加密机制和软件加密机制对第二数据进行两次加密以获取加密的数据包并生成匹配的密钥;
硬件加密机制为椭圆曲线密码加密机制,软件加密机制为aes-256算法和国密sm4算法的组合,aes-256算法和sm4算法的组合是指,在加密数据时,aes-256算法和sm4算法对数据进行两次加密以获取加密的数据包;aes-256算法和sm4算法对数据进行两次加密的顺序如下:1、依次为aes-256算法和sm4算法;2、依次为sm4算法和aes-256算法。
密钥至少包括第九密钥,第九密钥为aes-256算法与国密sm4算法的组合和椭圆曲线密码加密机制对第二数据进行两次加密后产生的密钥。
aes-256
php完整的aes-256算法加密解密程序如下所述:
sm4算法加密和解密的过程,若加密时加密的后数据为十六进制字符串,解密时再将十六进制字符串解密,具体的加密解密程序如下:
sm4算法的一个特点是其密文长度等于明文长度,而且密钥长度一致,是16字节的。c的代码里面输入输出都是十六进制数据,需要将字符串转为char类型数组,并且保证长度是16整数倍。
解密时密文是十六进制字符串,需要将字符串先转为int类型数组,再作解密操作,具体代码<br><br>
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,模块和相关工作单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的方法和系统或装置或模块或单元,可以通过其它的方式实现。例如,以上所描述的方法实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。