一种基于加密和摘要算法的可逆防篡改加解密数据的方法与流程

文档序号:16886565发布日期:2019-02-15 22:41阅读:516来源:国知局

本发明属于计算机通信领域,涉及一种基于加密和摘要算法的可逆防篡改加解密数据的方法。



背景技术:

在高速发展的互联网时代,数据在各种各样的网络设备上传输。数据在传输的过程中被暴露在各种各样的网络设备中。数据存在被网络设备截取、解密、篡改,再进行传输的风险。为了提高数据在网络设备传输过程中的安全性,对数据使用更复杂的加解密数据的算法显的极为重要。

md5消息摘要算法全称为message-digestalgorithm5,是计算机广泛使用的散列算法之一,具备的特性如下:1)不可逆即没有系统的方法可以通过md5的结果值计算出md5的原始明文信息内容;2)离散性即没有规律可循,原始信息很少的变化产生的md5结果值会有巨大的变化。

des加密算法全称为dataencryptionstandard,是一种使用密钥加密的块算法。具备的特性如下:1)可逆性即明文通过des的加密算法计算的密文结果,可以通过相应的解密算法将密文解密出原始的明文数据

从以上2种特性可以得知md5算法具有不可逆性,明文数据经md5算法后得到的摘要信息,无法通过摘要信息解密出明文。明文数据经des算法加密出的密文,一旦被截取,可通过对应的解密算法将密文解密出明文,无法确保数据的安全。



技术实现要素:

本发明为解决上述技术的不足,提供一种基于加密和摘要算法的可逆防篡改加解密数据的方法。

本发明解决其技术问题所采用的技术方案包括如下具体步骤:

步骤(1)、根据待加密的明文字符串ea计算申请内存eb和ec的大小,如果明文字符串ea的长度ealen为8的倍数,则内存eb和ec大小为明文字符串ea的长度ealen;如果明文字符串ea的长度ealen不是8的倍数,则内存eb和ec的大小为即明文字符串ea的长度ealen除以8向下取整后加1,再乘以8;

步骤(2)、将申请的内存eb和ec的数据全部置0,将字符串ea的内容拷贝到内存eb中

步骤(3)、将内存eb中的数据按每8个字节的数据用des算法进行加密,并将加密结果存在内存ec中;

步骤(4)、将内存eb中的数据用md5算法计算出16个字节的摘要信息结果,并将摘要信息结果存在新建内存ed中;

步骤(5)、将内存ec和内存ed的数据按1个字节ec和1个字节ed的数据依次进行混合存放在新建内存ee中,因ec和ed的内存数据长度可能不一样,将多出来的内存块数据存放在ee的结尾,即内存ee中的数据为ed1ec1ed2ec2…ecn-1ecn或ed1ec1ed2ec2…edn-1edn

步骤(6)、将内存ee中的每个字节数据按16进制进行格式化输出成2位可显示字符数据存放在字符串ef中,字符串ef即为加密后的最终结果数据;

以上内容为加密步骤,下面的是解密步骤

步骤(7)、将加密后的密文字符串ef转化成二进制的数据存放在内存db中,db的长度为字符串ef的长度除以2;

步骤(8)、将内存db中的数据按1个字节dc、1个字节dd的顺序依次分开存放在内存dc和dd中,内存dc为明文经md5的摘要信息值长度为16个字节,内存dd为明文经des加密后的密文;

步骤(9)、将内存dd中的密文每8个字节用des算法进行解密,将解密后的明文存放在内存de中;

步骤(10)、将dd解密后的明文de用md5算法计算出摘要信息存放在内存df中;

步骤(11)、将从db中取出来的md5摘要信息值dc和解密后明文de用md5计算出来的摘要信息值df进行比较,如果dc和df的内存数据相同,则解密成功,说明接收到的密文数据未修改,得到明文数据de;如果dc和df的内存数据不同,则说明接收到的密文数据异常,不能正常解析。

本发明有益效果如下:

本发明中将md5的离散性和des的可逆性结合,使得加密后的密文在网络传输过程中增加了安全性,防止密文在网络传输过程中被篡改后再进行传输,即具备防篡改性,同时密文能在正确的终端接收到后进行解密得到明文数据,即具备可逆性。

具体实施方式

下面对本发明作进一步的说明。

一种基于加密和摘要算法的可逆防篡改加解密数据的方法,主要的组成部分是:网络上的2个设备,用于加密和解密数据;

一种基于加密和摘要算法的可逆防篡改加解密数据的方法的具体步骤是:

步骤(1)、设备1取明文字符串ea的长度ealen,根据字符串ea的长度ealen计算出申请内存的eb和ec的大小,如果ealen为8的倍数,则eb和ec的大小为ealen;如果ealen的长度不是8的倍数,则eb和ec的大小为即明文字符串ea的长度ealen除以8向下取整后加1,再乘以8,分别申请2块内存eb和ec;

步骤(2)、将申请的内存eb和ec全部置0,将ea的字符串内容拷贝到内存eb中

步骤(3)、将内存eb中的数据按每8个字节的数据用des算法进行加密,并将加密结果存在内存ec中

步骤(4)、将内存eb中的数据用md5算法计算出16个字节的摘要信息结果,并将摘要信息结果存在内存ed中

步骤(5)、将内存ec和内存ed的数据按1个字节ec和1个字节ed的数据依次进行混合存放在内存ee中,因ec和ed的内存数据长度可能不一样,多出来的内存块数据存放在ee的结尾,即内存ee中的数据为ed1ec1ed2ec2…ecn-1ecn或ed1ec1ed2ec2…edn-1edn

步骤(6)、将内存ee中的每个字节数据按16进制进行格式化输出成2位可显示字符数据存放在字符串ef中,字符串ef即为加密后的最终结果数据

步骤(7)、设备1将加密后的最终结果字符串ef通过网络传输给设备2;

步骤(8)、设备2接收到加密后的密文字符串ef后,将ef转化成二进制的数据存放在内存db中,db的长度为字符串ef的长度除以2;

步骤(9)、将内存db中的数据依次按1个字节dc、1个字节dd的顺序分开存放在内存dc和dd中,内存dc为明文经md5的摘要信息值长度为16个字节,内存dd为明文经des加密后的密文;

步骤(10)、将内存dd中的密文每8个字节用des算法进行解密,将解密后的明文存放在内存de中;

步骤(11)、将dd解密后的明文de用md5算法计算出摘要信息存放在内存df中;

步骤(12)、将从db中取出来的md5摘要信息值dc和解密后明文de用md5计算出来的摘要信息值df进行比较,如果dc和df的内存数据相同,则解密成功,说明接收到的密文数据未修改,得到明文数据de;如果dc和df的内存数据不同,则说明接收到的数据异常。

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