一种基于双明文的数据对称加密方法与流程

文档序号:15357670发布日期:2018-09-05 00:11阅读:713来源:国知局

本发明属于信息安全技术领域,涉及一种数据加密方法,主要涉及一种基于双明文的数据对称加密方法。



背景技术:

对称密钥密码体制是一种传统密码体制,又称为单密钥密码体制或秘密密钥密码体制。如果一个密码体制的加密密钥和解密密钥相同,或者虽然不相同,但是由其中的任意一个可以很容易地推导出另一个,则该密码体制便称为对称密钥密码体制。其特点为:一是加密密钥和解密密钥相同,或本质上相同;二是密钥必须严格保密。这就意味着密码通信系统的安全完全依赖于密钥的保密。通信双方的信息加密以后可以在一个不安全的信道上传输,但通信双方传递密钥时必须提供一个安全可靠的信道。常用的对称密码算法有des、3-des、idea、aes等。这些都是实现的一组明文加密得到一组密文,在信息的利用上一次加密只能包含一种信息,解密时能够获取者一种信息的全部内容,一次信息传递的信息量有待增加,并且对于特定的使用环境,不能够在不使用分支判断的条件下提供不同的信息。在这些方面,传统的对称密码在技术上有待提高。



技术实现要素:

为了解决上述技术问题,本发明提供了一种基于双明文的数据对称加密方法。

本发明所采用的技术方案是:一种基于双明文的数据对称加密方法,其特征在于,包括以下步骤:

步骤1:消息发送者在终端a使用两个不同的密钥k1,k2分别对两段任意长度的不同明文m1,m2进行加密,得到一段密文c;

步骤2:将密文c发送给消息接收者;

步骤3:消息接收者在终端b解密时,对密文c,输入不同的密钥,解密得不同的明文;

密文c接收者有三类:一类是消息接收者b1,其拥有密钥k1;一类是消息接收者b2,其拥有密钥k2;一类是消息接收者b3,其拥有密钥k1,k2。

本发明的有益效果:本发明在阻止攻击者试图穷举密钥方面具有创新性,并且快速高效。同时引入了hash算法,既能够保证数据的完整性,又能提供防篡改与检验机制,在安全性上得到保证,具有良好的技术优势。可应用的领域包括带有自我保护性的数据传输、数字版权保护、特殊环境下的软件的保护等。

附图说明

图1为本发明实施例的流程图。

具体实施方式

为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。

请见图1,本发明提供的一种基于双明文的数据对称加密方法,包括以下步骤:

步骤1:消息发送者在终端a使用两个不同的密钥k1,k2分别对两段任意长度的不同明文m1,m2进行加密,得到一段密文c;

步骤1.1:消息发送者在终端a输入用于产生密钥的两个口令masterkey1,masterkey2,两个口令均由消息发送者指定,可以是包含任意字符的字符串。同时将两个口令masterkey1,masterkey2采用hash算法产生分别产生对应的密钥k1,k2,密钥k1,k2的长度均为kbit;由密钥分配函数kdf()决定子密钥循环使用的次序;

本实施例中采用hash算法产生密钥k1,k2,若采用md5算法,则k1,k2的长度为128bit;若采用sha-1算法,则k1,k2的长度为160bit;若采用sha-256算法,则k1,k2的长度为256bit;

k1,k2最终以lbit为单位分割成如下形式:

k1=k1,1||k1,2||…||k1,(k/l),k2=k2,1||k2,2||…||k2,(k/l)。

本实施例中由密钥分配函数kdf()决定子密钥循环使用的次序,对编号为i的分组分配对应的加密密钥k1,i,k2,i;密钥分配函数kdf()为:

其中,i=1,2,3,…,k/l。

步骤1.2:消息发送者在终端a输入两段不同的明文m1,m2,对输入的m1,m2使用padding方法进行处理使之等长(遵照已有的pkcs7padding标准),生成新的消息m_p1,m_p2;

步骤1.3:消息发送者在终端a分别计算m_p1和m_p2的hash值m_h1,m_h2;

步骤1.4:消息发送者所在的终端a将m_h1,m_h2分别前置于m_p1,m_p2,生成新的消息m_hp1,m_hp2;

步骤1.5:消息发送者所在的终端a将m_h1,m_h2分别与m_p1,m_p2利用扩散明文函数diffusion()进行扩散操作,并将结果分别替换m_hp1,m_hp2中的m_p1,m_p2,生成新的待加密消息m_hpd1,m_hpd2;

本实施例的扩散明文函数diffusion()为:

m_hpd1=m_h1||(m_p1xorm_h1);

m_hpd2=m_h2||(m_p2xorm_h2)。

步骤1.6:消息发送者所在的终端a对新的待加密消息m_hpd1,m_hpd2进行分组,每lbit为一组,针对每个分组,用加密函数进行分组加密。

本实施例中l=16、32、64或128;m1,m2最终以lbit为单位分割成:

m1=m1,1||m1,2||…||m1,i;

m2=m2,i||m2,2||…||m2,i;

其中,i=1,2,3,...,(k+m)/l。

本实施例的加密函数为:

c=enc(k1,k2,m_hpd1,m_hpd2,offset)=a||b||offset;

其中,a,b分别为加密得到的数据块;

分组中:

其中,ai,bi分别为加密得到的数据块。通过随机数生成函数gr()产生一个lbit随机偏移量offseti;i=1,2,3,...,(k+m)/l。

步骤2:将密文c发送给消息接收者;

步骤3:消息接收者在终端b解密时,对密文c,输入不同的密钥,解密得不同的明文;

密文c接收者有三类:一类是消息接收者b1,其拥有密钥k1;一类是消息接收者b2,其拥有密钥k2;一类是消息接收者b3,其拥有密钥k1,k2。则在不同的消息接收者处,由于拥有的密钥不同,无需使用分支判断便能使不同的接受者解密得到不同的明文,同时增加了一次加密后信息传递的信息量。

具体包括以下子步骤:

步骤3.1:消息接收者在终端b输入用于解密的口令masterkey,口令由消息发送者指定,可以是包含任意字符的字符串。同时将口令masterkey用hash算法产生用于解密的密钥k,密钥k的长度为kbit;

步骤3.2:消息接收者所在的终端b对密文c进行分组,每lbit为一组;密文c最终以lbit为单位分割成:

c=c1||c2||…||ci;

其中,i=1,2,3,...,(k+m)/l。

步骤3.3:消息接收者所在的终端b用解密函数对密文c进行解密得到m′0,并提取出前面代表hash值的数据m0_h;

本实施例的解密函数为:

m0=dec(k,c)=dec(k,a||b||offset);

其中,a,b分别为加密得到的数据块;

分组中:

m0,i=dec(ki,ci)=dec(ki,ai||bi||offseti)

=(ai*ki+bi)-offseti;

其中,ai,bi分别为加密得到的数据块;i=1,2,3,...,(k+m)/l。

步骤3.4:消息接收者所在的终端b使用逆扩散明文函数diffusion-1(),对m′0进行扩散明文的逆操作,得到m0_d-1

本实施例的逆扩散明文函数diffusiom-1()为:

其中,i=1,2,3,...,(k+m)/l.。

步骤3.5:消息接收者所在的终端b对步骤3.4中得到的结果m0_d-1进行hash,将得到的结果m0_hd-1与步骤3.3中提取出的m0_h进行比较,判断是否相同;如果相同,则说明解密成功,并对m0_d-1进行un-padding操作(遵照已有的pkcs7padding标准),得到的结果即为解密出的明文m0;如果不相同,则说明解密失败。

本发明的消息接收者在终端b解密时,对密文c,输入不同的密钥,解密得不同的明文,即如果接收者拥有密钥k1,则输入密钥k1只会解密得明文m1,不能得到明文m2;如果接收者拥有密钥k2,则输入密钥k2只会解密得明文m2,不能得到明文m1。本发明在阻止攻击者试图穷举密钥方面具有创新性,并且快速高效,能够增加一次加密后信息传递的信息量。同时引入了hash算法,既能够保证数据的完整性,又能提供防篡改与检验机制,在安全性上得到保证,具有良好的技术优势。

应当理解的是,本说明书未详细阐述的部分均属于现有技术。

应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1