CN111211888A - 数据发送方法、数据接收方法、发送端及接收端 - Google Patents
数据发送方法、数据接收方法、发送端及接收端 Download PDFInfo
- Publication number
- CN111211888A CN111211888A CN201911341188.5A CN201911341188A CN111211888A CN 111211888 A CN111211888 A CN 111211888A CN 201911341188 A CN201911341188 A CN 201911341188A CN 111211888 A CN111211888 A CN 111211888A
- Authority
- CN
- China
- Prior art keywords
- characters
- data
- hash value
- encrypted data
- preset number
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供数据发送方法、接收方法、发送端、接收端,涉及通信技术领域。发送方法为:利用消息摘要算法对待发送数据进行运算,得到待发送数据的第一散列值;将待发送数据的长度值拼接在待发送数据的头部和/或尾部,得到待加密数据;对待加密数据进行加密,得到第一加密数据;将第一散列值每隔第二预设数量的字符划分为多个第一子数据,并将一个第一子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符;在第一加密数据中每隔第五预设数量的字符,依次插入一组预设字符,得到第二加密数据;将第一散列值的所有字符拼接在第二加密数据的头部和/或尾部,得到目标加密数据。数据传输安全性能高,便于校验目标加密数据是否被篡改。
Description
技术领域
本发明实施例涉及通信技术领域,特别是涉及一种数据发送方法、数据接收方法、发送端、接收端、设备、计算机可读存储介质。
背景技术
目前,各种数据不可避免的需要进行传输,如由发送端将数据发往接收端。在传输过程中,数据可能会存在被攻击和被窃取的可能性,对数据的安全造成威胁。
在现有技术中,发送端通常从接收端获取密钥,通过该密钥对数据进行加密后发送至接收端,接收端基于上述密钥解密。或者,发送端生成随机数,采用消息摘要算法对随机数进行运算,得到密钥,通过该密钥对数据进行加密后发送至接收端,并将上述密钥也发送至接收端,接收端基于收到的密钥进行解密。
发明人在研究过程中发现,上述现有技术方案存在如下缺点:上述发送方法中对数据加密方式过于简单,数据在传输过程中依然存在较大的安全威胁。
发明内容
本发明实施例提供一种数据发送方法、数据接收方法、发送端、接收端、设备、计算机可读存储介质,旨在解决数据在传输过程中存在较大的安全威胁的问题。
第一方面,本发明实施例提供了一种数据发送方法,应用于发送端,所述方法包括:
利用消息摘要算法对待发送数据进行运算,得到所述待发送数据的第一散列值;将所述待发送数据的长度值拼接在所述待发送数据的头部和/或尾部,得到待加密数据;所述待发送数据的长度值对应的字符数量为第一预设数量;
将所述第一散列值作为密钥,对所述待加密数据进行加密,得到第一加密数据;
将所述第一散列值每隔第二预设数量的字符划分为多个第一子数据,并将一个所述第一子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符;其中,所述待插入字符包括:各个第一位置编号和一个第二子数据;各个所述第一位置编号为所述第一子数据中各个字符在所述第一散列值的所有字符中的位置序号;所述各个第一位置编号的字符数量为第四预设数量;所述第二子数据为将预设散列值每隔第三预设数量的字符划分后得到的各个子数据;
在所述第一加密数据中每隔第五预设数量的字符,依次插入一组所述预设字符,得到第二加密数据;
将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据;所述第一散列值的所有字符的总数量为第六预设数量;
将所述目标加密数据发送至接收端。
可选的,所述在所述第一加密数据中每隔第五预设数量的字符,依次插入一组所述预设字符,得到第二加密数据,包括:
将所述第一加密数据每隔所述第五预设数量的字符划分为多个第三子数据;
在各个相邻的所述第三子数据之间,依次插入一组所述预设字符,得到第二加密数据。
可选的,所述将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据之前,还包括:
判断所述第二加密数据中是否插入了所述第一散列值中的所有字符;
所述将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据,包括:
在所述第二加密数据中未插入所述第一散列值中的所有字符的情况下,将所述第一散列值的所有字符作为整体,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
可选的,所述将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据,包括:
将所述第一散列值的所有字符和所述预设散列值中的所有字符,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
所述将所述第一散列值的所有字符和所述预设散列值中的所有字符,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据,包括:
在所述第一散列值的头部和/或尾部,拼接所述预设散列值中的所有字符,得到待拼接数据;
将所述待拼接数据,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
第二方面,本发明实施例提供了一种数据接收方法,应用于接收端,所述方法包括:
接收发送端发送的目标加密数据;
将所述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据;
在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将所述第二加密数据中的剩余字符确定为第一加密数据;所述第七预设数量等于所述第五预设数量、第二预设数量、第三预设数量以及第四预设数量的和;
在一组所述检验字符中,从头部和/或尾部依次获取所述第二预设数量的字符,得到一组验证散列值字符,并将一组所述检验字符中剩余的字符确定为第四子数据;
在所述第四子数据中获取所述第四预设数量的字符,得到多个第二位置编号;
将各组所述检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,得到插入的散列值字符;
在第一集合为第二集合的子集的情况下,将所述第一散列值作为所述第一加密数据的秘钥,进行解密,得到解密数据;所述第一集合为所述插入的散列值字符组成的集合;所述第二集合为所述第一散列值中的所有字符组成的集合;
将所述解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值,并将所述解密数据剩余的字符确定为待判定数据;
在所述待判定数据对应的消息摘要算法的第二散列值与所述第一散列值一致,且所述待判定数据的长度值与所述第一长度值一致的情况下,将所述待判定数据确定为待发送数据。
可选的,所述在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,包括:
将所述第二加密数据每隔所述第七预设数量的字符划分为多个第五子数据;
在每个所述第五子数据中,依次获取所述第五预设数量的字符之后的所有字符,得到多组检验字符。
第三方面,本发明实施例提供了一种发送端,所述发送端包括:
第一散列值获取模块,用于利用消息摘要算法对待发送数据进行运算,得到所述待发送数据的第一散列值;
第一拼接模块,用于将所述待发送数据的长度值拼接在所述待发送数据的头部和/或尾部,得到待加密数据;所述待发送数据的长度值对应的字符数量为第一预设数量;
加密模块,用于将所述第一散列值作为密钥,对所述待加密数据进行加密,得到第一加密数据;
第二拼接模块,用于将所述第一散列值每隔第二预设数量的字符划分为多个第一子数据,并将一个所述第一子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符;其中,所述待插入字符包括:各个第一位置编号和一个第二子数据;各个所述第一位置编号为所述第一子数据中各个字符在所述第一散列值的所有字符中的位置序号;所述各个第一位置编号的字符数量为第四预设数量;所述第二子数据为将预设散列值每隔第三预设数量的字符划分后得到的各个子数据;
插入模块,用于在所述第一加密数据中每隔第五预设数量的字符,依次插入一组所述预设字符,得到第二加密数据;
第三拼接模块,用于将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据;所述第一散列值的所有字符的总数量为第六预设数量;
发送模块,用于将所述目标加密数据发送至接收端。
可选的,所述插入模块包括:
第一划分单元,用于将所述第一加密数据每隔所述第五预设数量的字符划分为多个第三子数据;
插入单元,用于在各个相邻的所述第三子数据之间,依次插入一组所述预设字符,得到第二加密数据。
可选的,所述发送端还包括:
判断模块,用于判断所述第二加密数据中是否插入了所述第一散列值中的所有字符;
所述第三拼接模块,包括:
第一拼接单元,用于在所述第二加密数据中未插入所述第一散列值中的所有字符的情况下,将所述第一散列值的所有字符作为整体,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
可选的,所述第三拼接模块,包括:
第二拼接单元,用于将所述第一散列值的所有字符和所述预设散列值中的所有字符,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
可选的,所述第二拼接单元,包括:
第一拼接子单元,用于在所述第一散列值的头部和/或尾部,拼接所述预设散列值中的所有字符,得到待拼接数据;
第二拼接子单元,用于将所述待拼接数据,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
第四方面,本发明实施例提供了一种接收端,所述接收端包括:
接收模块,用于接收发送端发送的目标加密数据;
第二加密数据获取模块,用于将所述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据;
第一加密数据获取模块,用于在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将所述第二加密数据中的剩余字符确定为第一加密数据;所述第七预设数量等于所述第五预设数量、第二预设数量、第三预设数量以及第四预设数量的和;
验证散列值字符获取模块,用于在一组所述检验字符中,从头部和/或尾部依次获取所述第二预设数量的字符,得到一组验证散列值字符,并将一组所述检验字符中剩余的字符确定为第四子数据;
位置编号获取模块,用于在所述第四子数据中获取所述第四预设数量的字符,得到多个第二位置编号;
排序模块,用于将各组所述检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,得到插入的散列值字符;
解密模块,用于在第一集合为第二集合的子集的情况下,将所述第一散列值作为所述第一加密数据的秘钥,进行解密,得到解密数据;所述第一集合为所述插入的散列值字符组成的集合;所述第二集合为所述第一散列值中的所有字符组成的集合;
待判定数据获取模块,用于将所述解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值,并将所述解密数据剩余的字符确定为待判定数据;
待发送数据获取模块,用于在所述待判定数据对应的消息摘要算法的第二散列值与所述第一散列值一致,且所述待判定数据的长度值与所述第一长度值一致的情况下,将所述待判定数据确定为待发送数据。
可选的,所述第一加密数据获取模块,包括:
第二划分单元,用于将所述第二加密数据每隔所述第七预设数量的字符划分为多个第五子数据;
第一加密数据获取单元,用于在每个所述第五子数据中,依次获取所述第五预设数量的字符之后的所有字符,得到多组检验字符。
第五方面,本发明实施例还提供了一种设备,该设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明所述的数据发送方法的步骤,或,所述计算机程序被所述处理器执行时实现本发明所述的数据接收方法的步骤。
第六方面,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现本发明所述的数据发送方法的步骤,或,所述计算机程序被处理器执行时实现本发明所述的数据接收方法的步骤。
在本发明实施例中,利用消息摘要算法对待发送数据进行运算,得到所述待发送数据的第一散列值;将所述待发送数据的长度值拼接在所述待发送数据的头部和/或尾部,得到待加密数据;所述待发送数据的长度值对应的字符数量为第一预设数量;将所述第一散列值作为密钥,对所述待加密数据进行加密,得到第一加密数据;将所述第一散列值每隔第二预设数量的字符划分为多个第一子数据,并将一个所述第一子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符;其中,所述待插入字符包括:各个第一位置编号和一个第二子数据;各个所述第一位置编号为所述第一子数据中各个字符在所述第一散列值的所有字符中的位置序号;所述各个第一位置编号的字符数量为第四预设数量;所述第二子数据为将预设散列值每隔第三预设数量的字符划分后得到的各个子数据;在所述第一加密数据中每隔第五预设数量的字符,依次插入一组所述预设字符,得到第二加密数据;将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据;所述第一散列值的所有字符的总数量为第六预设数量;将所述目标加密数据发送至接收端。本申请中先将待发送数据的长度值拼接在待发送数据的头部和/或尾部,得到待加密数据,然后采用第一散列值作为密钥,对该待加密数据进行加密,得到第一加密数据。将第一散列值每隔第二预设数量的字符划分为多个第一子数据,将一个子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符,该待插入字符包括了第一子数据中各个字符在第一散列值的所有字符中的位置序号,由此,后续接收端利于通过上述位置序号进行排序,可以得到部分或全部的第一散列值,利于验证目标加密数据的安全性。同时,该待插入字符包括了预设散列值的各个子数据,接收端可以根据预设散列值也对目标加密数据进行安全性验证,利于验证目标加密数据的安全性。又在第一加密数据中每隔第五预设数量的字符依次插入了一组预设字符,得到第二加密数据,又在第二加密数据的头部和/或尾部拼接了第一散列值中的所有字符才得到目标加密数据,相当于多进行了五次加密,加密复杂,数据传输过程中安全性能高。而且,将第一散列值中的所有字符均拼接在第二加密数据中,使得目标加密数据中包括了第一散列值中的所有字符,一方面不管第一加密数据的长短,均可以保证后续接收端可以采用完整的第一散列值进行解密,另一方面便于接收端利用拼接的第一散列值的所有字符校验依次插入的第一散列值中的字符的准确性,由此进一步校验该目标加密数据在传输过程中是否被篡改等,利于提升数据传输的安全性和完整性。
附图说明
图1示出了本发明实施例一中提供的数据发送方法的流程图;
图2示出了本发明实施例一中提供的MD5算法的原理总体流程图;
图3示出了本发明实施例二中提供的数据发送方法的流程图;
图4示出了本发明实施例三中提供的数据接收方法的流程图;
图5示出了本发明实施例四中提供的数据接收方法的流程图;
图6示出了本发明实施例五提供的一种发送端的结构框图;
图7示出了本发明实施例五提供的另一发送端的结构框图;
图8示出了本发明实施例六提供的一种接收端的结构框图;
图9示出了本发明实施例六提供的另一种接收端的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
参照图1,图1示出了本发明实施例一中提供的数据发送方法的流程图,该数据发送方法应用于发送端。
在本发明实施例中,该发送端可以对待发送数据进行多种加密处理等,并可以将处理后的目标加密数据发送至接收端。该发送端可以和接收端进行通信,以向接收端发送上述目标加密数据。对发送端不作具体限定。
本发明实施例中,该数据发送方法具体可以包括如下步骤:
步骤101,利用消息摘要算法对待发送数据进行运算,得到所述待发送数据的第一散列值。
在本发明实施例中,待发送数据可以为发送端想要传输给接收端的数据,该待发送数据可以为原始数据等。该待发送数据库以为控制指令等。该待发送数据可以为文件或文件中的部分数据等。在本发明实施例中,对此不作具体限定。
例如,该待发送数据可以为软件版本文件,或者,该待发送数据可以为定位日志文件,该待发送数据可以为告警日志文件等。或者,该待发送数据可以为自动驾驶的控制指令等。
在本发明实施例中,消息摘要算法(Message-Digest Algorithm,MD)是不可逆的加密过程。无论待发送数据的长度为多少,利用消息摘要算法对待发送数据进行运算后,得到的该待发送数据的第一散列值的长度为固定的。如,该待发送数据的第一散列值可以为32个字符。在本发明实施例中,对第一散列值的长度不作具体限定。
具体应用中,可以采用MD2、MD4、MD5对待发送数据进行运算,得到所述待发送数据的第一散列值。如,可以采用MD5对待发送数据进行运算。
MD5信息摘要算法(MD5 Message-Digest Algorithm)是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。
消息摘要算法的发展过程具体如下:1992年8月,罗纳德·李维斯特向互联网工程任务组(IETF)提交了一份重要文件,描述了这种算法的原理。由于这种算法的公开性和安全性,在90年代被广泛使用在各种程序语言中,用以确保资料传递无误等。
MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性。MD5算法因其普遍、稳定、快速的特点,广泛应用于普通数据的加密保护领域。
Rivest在1989年开发出MD2算法。在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的校验和追加到信息末尾,并且根据这个新产生的信息计算出散列值。后来,Rogier和Chauvaud发现如果忽略了校验和MD2将产生冲突。MD2算法加密后结果是唯一的(即不同信息加密后的结果不同)。
为了加强算法的安全性,Rivest在1990年又开发出MD4算法。MD4算法同样需要填补信息以确保信息的比特位长度减去448后能被512整除(信息比特位长度mod 512=448)。然后,一个以64位二进制表示的信息的最初长度被添加进来。信息被处理成512位damgard/merkle迭代结构的区块,而且每个区块要通过三个不同步骤的处理。Den boer和Bosselaers以及其他人很快的发现了攻击MD4版本中第一步和第三步的漏洞。Dobbertin向大家演示了如何利用一部普通的个人电脑在几分钟内找到MD4完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果)。
1991年,Rivest开发出技术上更为趋近成熟的MD5算法。它在MD4的基础上增加了"安全带"(safety-belts)的概念。虽然MD5比MD4复杂度大一些,但却更为安全。这个算法很明显的由四个和MD4设计有少许不同的步骤组成。在MD5算法中,信息-摘要的大小和填充的必要条件与MD4完全相同。Den boer和Bosselaers曾发现MD5算法中的假冲突(pseudo-collisions),但除此之外就没有其他被发现的加密后结果了。
MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
参照图2所示,图2示出了本发明实施例一中提供的MD5算法的原理总体流程图。如图2所示,每次的运算都由前一轮的128位结果值和当前的512bit值进行运算。
第一步:按位补充数据。
在MD5算法中,首先需要对信息进行填充,这个数据按位(bit)补充,要求最终的位数对512求模的结果为448。也就是说数据补位后,其位数长度只差64位(bit)就是512的整数倍。即便是这个数据的位数对512求模的结果正好是448也必须进行补位。补位的实现过程:首先在数据后补一个1bit;接着在后面补上一堆0bit,直到整个数据的位数对512求模的结果正好为448。总之,至少补1位,而最多可能补512位。
第二步:扩展长度。
在完成补位工作后,又将一个表示数据原始长度的64bit数(这是对原始数据没有补位前长度的描述,用二进制来表示)补在最后。当完成补位及补充数据的描述后,得到的结果数据长度正好是512的整数倍。也就是说长度正好是16个(32bit)字的整数倍。
第三步:初始化MD缓存器。
MD5运算要用到一个128位的MD5缓存器,用来保存中间变量和最终结果。该缓存器又可看成是4个32位的寄存器A、B、C、D,初始化为:
A:01 23 45 67
B:89 ab cd ef
C:fe dc ba 98
D:76 54 32 10
第四步:处理数据段。
首先定义4个非线性函数F、G、H、I,对输入的报文运算以512位数据段为单位进行处理。对每个数据段都要进行4轮的逻辑处理,在4轮中分别使用4个不同的函数F、G、H、I。每一轮以ABCD和当前的512位的块为输入,处理后送入ABCD(128位)。
第五步:输出。
信息摘要最终处理成以A,B,C,D的形式输出。也就是开始于A的低位在前的顺序字节,结束于D的高位在前的顺序字节。
MD5可以应用于密码管理。当我们需要保存某些密码信息以用于身份确认时,如果直接将密码信息以明码方式保存在数据库中,不使用任何保密措施,系统管理员就很容易能得到原来的密码信息,这些信息一旦泄露,密码也很容易被破译。为了增加安全性,有必要对数据库中需要保密的信息进行加密,这样,即使有人得到了整个数据库,如果没有解密算法,也不能得到原来的密码信息。MD5算法可以很好地解决这个问题,因为它可以将任意长度的输入串经过计算得到固定长度的输出,而且只有在明文相同的情况下,才能等到相同的密文,并且这个算法是不可逆的,即便得到了加密以后的密文,也不可能通过解密算法反算出明文。这样就可以把用户的密码以MD5值(或类似的其它算法)的方式保存起来,用户注册的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,如果密文相同,就可以认定密码是正确的,否则密码错误。通过这样的步骤,系统在并不知道用户密码明码的情况下就可以确定用户登录系统的合法性。这样不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
MD5算法还可以作为一种电子签名的方法来使用,使用MD5算法就可以为任何文件(不管其大小、格式、数量)产生一个独一无二的“数字指纹”,借助这个“数字指纹”,通过检查文件前后MD5值是否发生了改变,就可以知道源文件是否被改动。我们在下载软件的时候经常会发现,软件的下载页面上除了会提供软件的下载地址以外,还会给出一串长长的字符串。这串字符串其实就是该软件的MD5值,它的作用就在于下载该软件后,对下载得到的文件用专门的软件(如Windows MD5 check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。
在电子邮件使用越来越普遍的情况下,可以利用MD5算法在邮件接收服务器上进行垃圾邮件的筛选,以减少此类邮件的干扰,具体思路如下:
1.建立一个邮件MD5值资料库,分别储存邮件的MD5值、允许出现的次数(假定为3)和出现次数(初值为零)。
2.对每一封收到的邮件,将它的正文部分进行MD5计算,得到MD5值,将这个值在资料库中进行搜索。
3.如未发现相同的MD5值,说明此邮件是第一次收到,将此MD5值存入资料库,并将出现次数置为1,转到第五步。
4.如发现相同的MD5值,说明收到过同样内容的邮件,将出现次数加1,并与允许出现次数相比较,如小于允许出现次数,就转到第五步。否则中止接收该邮件。结束。
5.接收该邮件。
MD5相对MD4所作的改进具体如下:1.增加了第四轮。2.每一步均有唯一的加法常数。3.减弱第二轮中函数的对称性。4.第一步加上了上一步的结果,这将引起更快的雪崩效应(就是对明文或者密钥改变1bit都会引起密文的巨大不同)。5.改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似。6.近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应,各轮的位移量互不相同。
例如,利用消息摘要算法对待发送数据进行运算后,得到的待发送数据的第一散列值可以为:AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp。
步骤102,将所述待发送数据的长度值拼接在所述待发送数据的头部和/或尾部,得到待加密数据;所述待发送数据的长度值对应的字符数量为第一预设数量。
在本发明实施例中,待发送数据的长度值可以为待发送数据包含的字符数量。例如,某一待发送字符包含有2000个字符,则该待发送数据的长度值可以为2000。该待发送数据的长度值对应的字符数量可以为上述长度值对应的字符组包含的所有字符的总数量。该待发送数据的长度值对应的字符数量可以为第一预设数量。例如,针对上述例子,该待发送数据的长度值对应的字符数量可以为:字符组“2000”所包含的所有字符的总数量。
在本发明实施例中,可以将上述待发送数据的长度值拼接在该待发送数据的头部和/或尾部,得到待加密数据。
步骤103,将所述第一散列值作为密钥,对所述待加密数据进行加密,得到第一加密数据。
在本发明实施例中,可以将上述待发送数据的第一散列值作为加解密的密钥,对上述待加密数据进行加密,得到第一加密数据。该加密算法可以采用DES(Data EncryptionStandard)、3DES(Triple DES)、RC2和RC4、IDEA(International Data EncryptionAlgorithm)、DSA(Digital Signature Algorithm,数字签名算法)、AES(AdvancedEncryption Standard,高级加密标准)等,在本发明实施例中,对此不作具体限定。
例如,将上述待发送数据的第一散列值作为AES加解密的密钥,对上述待加密数据进行AES加密,得到第一加密数据。
步骤104,将所述第一散列值每隔第二预设数量的字符划分为多个第一子数据,并将一个所述第一子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符;其中,所述待插入字符包括:各个第一位置编号和一个第二子数据;各个所述第一位置编号为所述第一子数据中各个字符在所述第一散列值的所有字符中的位置序号;所述各个第一位置编号的字符数量为第四预设数量;所述第二子数据为将预设散列值每隔第三预设数量的字符划分后得到的各个子数据。
在本发明实施例中,可以将上述第一散列值每隔第二预设数量的字符划分为多个第一子数据。上述第二预设数量可以相同或不同。该第二预设数量可以为大于或等于1的整数。在本发明实施例中,对此不作具体限定。
在本发明实施例中,在划分过程中,第二预设数量可以相同或不同,可以提升被破解的难度。
如,可以将第一散列值中第1字符共1个字符划分为一个第一子数据,可以将第一散列值中第2、第3共2个字符划分为一个第一子数据。
在本发明实施例中,可以从上述第一散列值的头部开始,将上述第一散列值每隔上述第二预设数量的字符划分为多个第一子数据。或者,可以从上述第一散列值的尾部开始,将上述第一散列值每隔上述第二预设数量的字符划分为多个第一子数据,可以提升被破解的难度。
例如,针对上述例子,若第一散列值为:“AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp”,若第二预设字符为2,每次都隔2个字符划分,则,将上述第一散列值每隔2个字符划分为多个第一子数据为:Aa、Bb、Cc、Dd、Ee、Ff、Gg、Hh、Ii、Jj、Kk、Ll、Mm、Nn、Oo、Pp。
在本发明实施例中,将第一散列值划分为多个第一子数据的过程中,每个第一子数据的字符数量第二预设数量可以均不相同,如各个第二预设数量可以为等差数列或等比数列等,可以进一步提升被破解的难度。在本发明实施例中,对此不作具体限定。
在本发明实施例中,在对第一散列值每隔第二预设数量的字符划分为多个第一子数据,可以从第一散列值的头部依次取出第二预设数量的字符,也可以从第一散列值的尾部依次取出第二预设数量的字符,可以进一步提升被破解的难度。在本发明实施例中,对此不做具体限定。
一组待插入字符可以包括:上述第一子数据中各个字符在第一散列值的所有字符中的位置序号,以及一个第二子数据。该第二子数据为预设散列值每隔第三预设数量的字符划分后得到的各个子数据。该第三预设数量可以为大于或等于1的整数。该预设散列值可以为随机选取的散列值等。
如,针对上述例子,一个第一子数据若为“Aa”,则,该第一子数据中字符“A”在第一散列值的所有字符中的位置序号为1,该第一子数据中字符“a”在第一散列值的所有字符中的位置序号为2。
在本发明实施例中,各个第一位置编号的字符数量为第四预设数量,即,该第一子数据中,各个字符在第一散列值中所有字符中的位置序号字符组所包含的所有字符的总数量。该第四预设数量可以与前述第一子数据中包含的字符的个数对应,在本发明实施例中,对此不作具体限定。例如,针对上述例子,若第一子数据为“Aa”,若字符“A”在第一散列值的所有字符中的位置序号为1,该第一子数据中字符“a”在第一散列值的所有字符中的位置序号为2,则,各个第一位置编号“12”字符组包含的字符“1”和“2”共2个。则,该第一子数据对应的各个第一位置编号的字符数量即为2,即,该第一子数据对应的第四预设数量即为2。
如,该预设散列值若为:0x76,0x50,0x59,0x16,0x77,0x30,0x69,0x18,0x76,0x5b,0x95,0x11,0x7a,0x51,0x78,0x19,0x76,0x5f,0x91,0x12,0x7f,0x52,0x39,0x17,0x76,0x5a,0x57,0x13,0x7d,0x53,0x59,0x16。若第三预设数量为1,则,对上述预设散列值每隔1个预设数量的字符划分后得到的各个第二子数据为:0x76、0x50、0x59、0x16、0x77、0x30、0x69、0x18、0x76、0x5b、0x95、0x11、0x7a、0x51、0x78、0x19、0x76、0x5f、0x91、0x12、0x7f、0x52、0x39、0x17、0x76、0x5a、0x57、0x13、0x7d、0x53、0x59、0x16。
针对上述例子,一组待插入字符可以为:120x76。该第一插入字符中的“1”为第一子数据中字符“A”在第一散列值的所有字符中的位置序号为1,“2”为该第一子数据中字符“a”在第一散列值的所有字符中的位置序号为2。“0x76”为一个第二子数据。
在本发明实施例中,第一组待插入字符可以为在一个第二子数据的头部和/或尾部,拼接各个第一位置编号得到。在本发明实施例中,对此不作具体限定。或者,在一组待插入字符中,第二子数据和各个第一位置编号之间可以通过预设符号进行连接。该预设符号可以根据实际需要进行设定,例如,该预设符号可以为“+”,则,针对上述例子,该一组待插入字符可以为“12+0x76”。
在本发明实施例中,将上述一个第一子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符。例如,针对上述例子,若一个第一子数据为:“Aa”,若一组待插入字符为:“120x76”,将该第一子数据拼接在该组待插入字符的头部,得到的一组预设字符可以为“Aa120x76”。在改组预设字符中,“Aa”为第一散列值中的一个第一子数据,“1”为第一子数据“Aa”中字符“A”在第一散列值的所有字符中的位置序号为1,“2”为该第一子数据“Aa”中字符“a”在第一散列值的所有字符中的位置序号为2。“0x76”为预设散列值的一个第二子数据。
步骤105,在所述第一加密数据中每隔第五预设数量的字符,依次插入一组所述预设字符,得到第二加密数据。
在本发明实施例中,在上述第一加密数据中每隔第五预设数量的字符,依次插入上述一组预设字符,得到第二加密数据。
如,在上述第一加密数据中第五预设数量的字符之后,插入一组预设字符。在上述第一加密数据中2倍的第五预设数量的字符之后,插入下一组预设字符,依次类推,直至将第一加密数据遍历完毕。
需要说明的是,在对第一加密数据中每隔第五预设数量的字符,依次插入一组预设字符的过程中,可以从第一加密数据的头部开始进行,也可以从尾部开始进行。在本发明实施例中,对此不作具体限定。可选的,该第五预设数量还可以根据第一加密数据的长度进行确定,可以进一步提升被破解的难度。在本发明实施例中,对此不作具体限定。
例如,该第五预设数量的字符可以为512字符、32字符等,或者,该第五预设数量的字符可以为512字节、10字节等。第五预设数量的字符可以为1个字符,或2个字符等。如,可以在第一加密数据的第512字节之后,插入一组预设字符,可以在第一加密数据的第1024字节后,插入另一组预设字符,可以在第一加密数据的第1536字节后,插入第三组预设字符……,依次类推直至将第一加密数据遍历完毕。
在本发明实施例中,每次插入过程中隔开的第五预设数量可以相同或不同,可以进一步提升被破解的难度。在本发明实施例中,对此不作具体限定。
例如,可以在第一加密数据的第5字节之后,插入一组预设字符,可以在第一加密数据的第15字节后,插入第二组预设字符,可以在第一加密数据的第40字节后,插入第三组预设字符,可以在第一加密数据的第65字节后,插入第四组预设字符,……,依次类推直至将第一加密数据遍历完毕。在上述插入过程中,第一次隔了5个字节,第二次隔了10个字节,第三次三次隔了15个字节,第四次隔了20个字节。
每次插入过程中隔开的第五预设数量均不相同,每次隔开的第五数量可以为等差数列,可以进一步提升被破解的难度。如上例中为首项为5,公差为5的等差数列。需要说明的是,在插入过程中,若将包含第一散列值全部字符的多组预设字符均已插入上述第一加密数据后,该第一加密数据的长度还没有遍历完毕的情况下,在获取上述一组待插入字符的过程中,可以从第一散列值中沿着与前次相反的顺序,依次取出第二预设数量的字符,将该第一散列值划分为多个第一子数据,可以进一步提升被破解的难度。或者,在插入过程中,若将第一散列值的全部字符均插入上述第一加密数据后,该第一加密数据的长度还没有遍历完毕的情况下,在获取上述一组待插入字符的过程中,可以从第一散列值中沿着与前次相同的顺序,依次取出第二预设数量的字符,将依次取出的第二数量的字符,将该第一散列值划分为多个第一子数据。在本发明实施例中,对此不作具体限定。
如,第一散列值的所有字符一共有32个,第一加密数据的长度为32768个字节,若将上述第一散列值划分为32个第一子数据,则,每个第一子数据均包含一个字符。则,每一组待插入字符也均包含第一散列值中的1个字符。在第一加密数据的第512字节之后,插入第一组预设字符,该第一组预设字符包含第一散列值中的第1个字符,在第一加密数据的第1024字节后,插入第二组预设字符,该第二组预设字符包含第一散列值中的第2个字符,可以在第一加密数据的第1536字节后,插入第三组预设字符,该第三组预设字符包含第一散列值中的第3个字符……,在第一加密数据的第16384字节后,插入第32组预设字符,该第32组预设字符包含第一散列值中的第32个字符。第一散列值中的32个字符已经完全插入了一遍,但是,第一加密数据的第16384字节后还有16384个剩余的字节。每组预设字符第一次是从第一散列值从头至尾的顺序依次取出第二数量的字符,则,可以从第一散列值从尾至头的顺序,依次取出第二预设数量的字符,得到各组新的预设字符。在第一加密数据的第16384字节后剩余的16384个字节,每个第一预设数量,依次插入上述各组新的预设字符。即,在第一加密数据的第16905字节后,插入新的第一组预设字符,该新的第一组预设字符包含有第一散列值中的第32个字符,在第一加密数据的第17417字节后,插入新的第二组预设字符,该新的第二组预设字符包含有第一散列值中的第31个字符,在第一加密数据的第17929字节后,插入新的第三组预设字符,该新的第三组预设字符包含有第一散列值中的第30个字符……,在第一加密数据的第32768字节后,插入新的第32组预设字符,该新的第32组预设字符包含有第一散列值中的第1个字符,得到第二加密数据。
步骤106,将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据;所述第一散列值的所有字符的总数量为第六预设数量。
在本发明实施例中,第一散列值的所有字符的总数量为第六预设数量。例如,前述例子,若第一散列值的所有字符一共有32个,则,该第一散列值对应的第六预设数量为32。
在本发明实施例中,可以将上述第一散列值的所有字符拼接在上述第二加密数据的头部和/或尾部,得到目标加密数据。具体可以将上述第一散列值的所有字符作为整体,拼接在上述第二加密数据的头部和/或尾部,得到目标加密数据。或者,将第一散列值的所有字符平均分成两部分,将一部分拼接在上述第二加密数据的头部,将另一部分拼接在上述第二加密数据的尾部等。本发明实施例中,对此不作具体限定。
如,将第一散列值的32个所有字符拼接在上述第二加密数据的头部,得到目标加密数据,则,目标加密数据从头开始的前32个字符即为上述第一散列值的所有字符。再如,将第一散列值的32个所有字符平均分成两部分:第1字符至第16字符的一部分和第17字符至第32字符的一部分。可以将第1字符至第16字符的一部分,拼接在上述第二加密数据的头部,将第17字符至第32字符的另一部分,拼接在上述第二加密数据的尾部,得到目标加密数据。则,目标加密数据从头开始的前16个字符,和目标加密数据从尾开始的前16个字符共同组成了上述第一散列值的所有字符。
在本发明实施例中,将第一散列值的所有字符拼接在上述第二加密数据的头部和/或尾部,得到目标加密数据,不管第一加密数据的长短,均可以保证上述目标加密数据中包括了完整的第一散列值,一方面保证了后续接收端可以采用完整的第一散列值进行解密,另一方面便于接收端利用拼接的第一散列值的所有字符校验依次插入的第一散列值中的字符的准确性,由此进一步校验该目标加密数据在传输过程中是否被篡改等,利于提升数据传输的安全性。
在本发明实施例中,可选的,上述步骤106可以包括:将所述第一散列值的所有字符和所述预设散列值中的所有字符,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
具体的,可以先将第一散列值的所有字符和上述预设散列值中的所有字符进行拼接,将拼接后的所有字符拼接在上述第二加密数据的头部和/或尾部,得到目标加密数据,可以进一步提升破解难度,提升目标加密数据传输安全性。
步骤107,将所述目标加密数据发送至接收端。
在本发明实施例中,发送端可以和接收端进行通信,发送端可以通过通信链路等将上述目标加密数据发送至接收端。该接收端可以存储有与上述目标加密数据对应的解密方法,根据上述解密方法对上述目标加密数据进行处理,得到上述待发送数据,实现了待发送数据的安全传输。
在本发明实施例中,先将待发送数据的长度值拼接在待发送数据的头部和/或尾部,得到待加密数据,然后采用第一散列值作为密钥,对该待加密数据进行加密,得到第一加密数据。将第一散列值每隔第二预设数量的字符划分为多个第一子数据,将一个子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符,该待插入字符包括了第一子数据中各个字符在第一散列值的所有字符中的位置序号,由此,后续接收端利于通过上述位置序号进行排序,可以得到部分或全部的第一散列值,利于验证目标加密数据的安全性。同时,该待插入字符包括了预设散列值的各个子数据,接收端可以根据预设散列值也对目标加密数据进行安全性验证,利于验证目标加密数据的安全性。又在第一加密数据中每隔第五预设数量的字符依次插入了一组预设字符,得到第二加密数据,又在第二加密数据的头部和/或尾部拼接了第一散列值中的所有字符才得到目标加密数据,相当于多进行了五次加密,加密复杂,数据传输过程中安全性能高。而且,将第一散列值中的所有字符均拼接在第二加密数据中,使得目标加密数据中包括了第一散列值中的所有字符,一方面不管第一加密数据的长短,均可以保证后续接收端可以采用完整的第一散列值进行解密,另一方面便于接收端利用拼接的第一散列值的所有字符校验依次插入的第一散列值中的字符的准确性,由此进一步校验该目标加密数据在传输过程中是否被篡改等,利于提升数据传输的安全性和完整性。
实施例二
参照图3,图3示出了本发明实施例二中提供的数据发送方法的流程图,应用于发送端,关于该发送端的描述,参照实施例一中的相关记载。该方法具体可以包括如下步骤:
步骤201,利用消息摘要算法对待发送数据进行运算,得到所述待发送数据的第一散列值。
步骤202,将所述待发送数据的长度值拼接在所述待发送数据的头部和/或尾部,得到待加密数据;所述待发送数据的长度值对应的字符数量为第一预设数量。
步骤203,将所述第一散列值作为密钥,对所述待加密数据进行加密,得到第一加密数据。
步骤204,将所述第一散列值每隔第二预设数量的字符划分为多个第一子数据,并将一个所述第一子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符;其中,所述待插入字符包括:各个第一位置编号和一个第二子数据;各个所述第一位置编号为所述第一子数据中各个字符在所述第一散列值的所有字符中的位置序号;所述各个第一位置编号的字符数量为第四预设数量;所述第二子数据为将预设散列值每隔第三预设数量的字符划分后得到的各个子数据。
在本发明实施例中,步骤201至步骤204分别可以参照本发明实施例一中步骤101至步骤104的具体记载,为了避免重复,此处不再赘述。
步骤205,将所述第一加密数据每隔所述第五预设数量的字符划分为多个第三子数据。
在本发明实施例中,可以将上述第一加密数据每隔上述第五预设数量的字符划分为多个第三子数据。同样的,在划分过程中,第五预设数量可以相同或不同,可以提升被破解的难度。
如,可以将第一加密数据中第1至第160字符共160个字符划分为一个第三子数据,可以将第一加密数据中第161至第480字符共320个字符划分为一个第三子数据。
在本发明实施例中,可以从上述第一加密数据的头部开始,将上述第一加密数据每隔上述第五预设数量的字符划分为多个第三子数据。或者,可以从上述第一加密数据的尾部开始,将上述第一加密数据每隔上述第五预设数量的字符划分为多个第三子数据,可以提升被破解的难度。
上述第五预设数量的确定可以参照前述实施例的相关记载,为了避免重复,此处不再赘述。
步骤206,在各个相邻的所述第三子数据之间,依次插入一组所述预设字符,得到第二加密数据。
在本发明示例中,可以在上述第一加密数据中各个相邻第三子数据之间,依次插入一一组上述预设字符,得到第二加密数据。
如,在上述第一加密数据中第1个第三子数据和第2第三子数据之间,插入第1组预设字符,在上述第一加密数据中第2个第一子数据和第3第一子数据之间,插入第2组预设字符……,直至上述第一加密数据中各个相邻第一子数据之间均插入有一组预设字符为止,得到第二加密数据。
步骤207,判断所述第二加密数据中是否插入了所述第一散列值中的所有字符。
在本发明实施例中,可以判断第二加密数据中插入的第一散列值的所有字符组成的集合是否与上述步骤101中得到的第一散列值的所有字符组成的集合是否相等,来判断第二加密数据中是否插入了第一散列值中的所有字符。如果两个集合相等,则可以确定第二加密数据中插入了第一散列值中的所有字符。如果两个集合不相等,则可以确定第二加密数据中未插入第一散列值中的所有字符。
在本发明实施例中,可选的,在判断得出第二加密数据中插入了第一散列值中的所有字符的情况下,可以直接将第二加密数据确定为目标加密数据。
步骤208,在所述第二加密数据中未插入所述第一散列值中的所有字符的情况下,将所述第一散列值的所有字符作为整体,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
在本发明实施例中,在上述第二加密数据中未插入上述第一散列值中的所有字符的情况下,说明第二加密数据并没有包括完整的第一散列值,可以将上述第一散列值的所有字符作为整体,拼接在第二加密数据的头部和/或尾部,得到目标加密数据,可以避免第二加密数据没有包括完整的第一散列值可能会导致后续无法解密或者解密错误的问题。同时,将上述第一散列值的所有字符作为整体,拼接在第二加密数据的头部和/或尾部,操作简便。而且,便于接收端利用拼接的第一散列值的所有字符校验依次插入的第一散列值中的字符的准确性,由此进一步校验该目标加密数据在传输过程中是否被篡改等,利于提升数据传输的安全性。
如,在上述第二加密数据中未插入上述第一散列值中的所有字符的情况下,可以将上述第一散列值的所有字符作为整体,拼接在第二加密数据的头部,得到目标加密数据。或者,可以将上述第一散列值的所有字符作为整体,拼接在第二加密数据的尾部,得到目标加密数据。
步骤209,将所述目标加密数据发送至接收端。
在本发明实施例中,步骤209可以参照前述步骤107,为了避免重复,此处不再赘述。
在本发明实施例中,先将待发送数据的长度值拼接在待发送数据的头部和/或尾部,得到待加密数据,然后采用第一散列值作为密钥,对该待加密数据进行加密,得到第一加密数据。将第一散列值每隔第二预设数量的字符划分为多个第一子数据,将一个子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符,该待插入字符包括了第一子数据中各个字符在第一散列值的所有字符中的位置序号,由此,后续接收端利于通过上述位置序号进行排序,可以得到部分或全部的第一散列值,利于验证目标加密数据的安全性。同时,该待插入字符包括了预设散列值的各个子数据,接收端可以根据预设散列值也对目标加密数据进行安全性验证,利于验证目标加密数据的安全性。又在第一加密数据中每隔第五预设数量的字符依次插入了一组预设字符,得到第二加密数据,又在第二加密数据的头部和/或尾部拼接了第一散列值中的所有字符才得到目标加密数据,相当于多进行了五次加密,加密复杂,数据传输过程中安全性能高。采用第一散列值作为密钥,加密得到第一加密数据后,又在第一加密数据中每隔第一预设数量的字符依次插入了散列值中的第二预设数量的字符,得到第二加密数据,又在第二加密数据的头部和/或尾部拼接了第一散列值中的所有字符才得到目标加密数据,相当于多进行了两次加密,加密复杂,数据传输过程中安全性能高。而且,将第一散列值中的所有字符均拼接在第二加密数据中,使得目标加密数据中包括了第一散列值中的所有字符,一方面不管第一加密数据的长短,均可以保证后续接收端可以采用完整的第一散列值进行解密,另一方面便于接收端利用拼接的第一散列值的所有字符校验依次插入的第一散列值中的字符的准确性,由此进一步校验该目标加密数据在传输过程中是否被篡改等,利于提升数据传输的安全性和完整性。
实施例三
参照图4,图4示出了本发明实施例三中提供的数据接收方法的流程图,应用于接收端,该接收端可以对上述目标加密数据进行多次解密处理等,对接收端不作具体限定。该方法具体可以包括如下步骤:
步骤301,接收发送端发送的目标加密数据。
步骤302,将所述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据。
在本发明实施例中,对上述目标加密数据的处理是前述实施例中,对待发送数据的处理的逆过程,该数据接收方法可以参照前述数据发送方法执行。
在本发明实施例中,可以将上述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将该目标加密数据剩余的字符确定为第二加密数据。
例如,前述若是将第一散列值的32个所有字符拼接在上述第二加密数据的头部,得到目标加密数据。则,该步骤302中,可以将目标加密数据从头开始的前32个字符确定为第一散列值的所有字符。将目标加密数据剩余的字符确定为第二加密数据。
在本发明实施例中,若在数据发送方法中,将第一散列值的所有字符和预设散列值中的所有字符,拼接在第二加密数据的头部和/或尾部,得到目标加密数据。该预设散列值的所有字符的总数量也可以为第六预设数量。则,该步骤302可以包括:
将所述目标加密数据的头部和/或尾部两倍的第六预设数量的字符,确定为第一散列值中的所有字符和预设散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据。若在前述数据发送方法中,将第一散列值拼接在了预设散列值的头部和/或尾部,则,将第一散列值中的所有字符和预设散列值中的所有字符组成的整体散列值的头部和/或尾部的第六预设数量的字符,确定为第一散列值,将该整体散列值剩余的字符确定为预设散列值。
步骤303,在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将所述第二加密数据中的剩余字符确定为第一加密数据;所述第七预设数量等于所述第五预设数量、第二预设数量、第三预设数量以及第四预设数量的和。
在本发明实施例中,该第五预设数量、第二预设数量、第三预设数量、第四预设数量的确定等可以参照前述发送方法实施例中的相关记载。第二预设数量、第三预设数量、第四预设数量以及第五预设数量的和等于上述第七预设数量。可以在上述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将上述第二加密数据中的剩余字符确定为第一加密数据。
例如,前述若是在第一加密数据的第512字符之后,插入第一组预设字符,第一组预设字符若为第一散列值中的第1个字符“A”、第1个字符“A”在第一散列值中的位置编号“1”,预设散列值中的“0x76”,在第一加密数据的第1024字符后,插入第二组预设字符,第二组预设字符若为第一散列值中的第2个字符“a”、第2个字符“a”在第一散列值中的位置编号“2”,预设散列值中的“0x50”,在第一加密数据的第1536字符后,插入第三组预设字符,第三组预设字符若为第一散列值中的第3个字符“B”、第3个字符“B”在第一散列值中的位置编号“3”,预设散列值中的“0x59”……,在第一加密数据的第16384字符后,插入第32组预设字符,第32组预设字符若为第一散列值中的第32个字符“p”、第32个字符“p”在第一散列值中的位置编号“32”,预设散列值中的“0x16”,得到第二加密数据。则,每个第五预设数量均相同均为512字符。每个第二预设数量均相同均为1个字符。每个第三预设数量均相同均为1,而,各个第一子数据对应的第四预设数量可能不同。若第一个子数据对应的第四预设数量为1,则该步骤303中,第一个第七预设数量可以为512+1+1+1=515个字符。根据各个第五预设数量、第四预设数量、第三预设数量、第二预设数量分别计算各个第七预设数量。依次类推,直至将第二加密数据遍历完毕为止,得到多组检验字符,将第二加密数据中剩余的字符确定为第一加密数据。若上述目标加密数据在传输过程中未被篡改,得到的第一组检验字符可以为“A10x76”,得到的第二组检验字符可以为“a20x50”。
步骤304,在一组所述检验字符中,从头部和/或尾部依次获取所述第二预设数量的字符,得到一组验证散列值字符,并将一组所述检验字符中剩余的字符确定为第四子数据。
在本发明实施例中,将一组检验字符中,从头部和/或尾部依次获取第二预设数量的字符,得到一组验证散列值字符。若该目标加密数据在传输过程中未经篡改,则,该租验证散列值字符可以与上述一个第一子数据一致。并将一组检验字符中剩余的字符确定为第四子数据,若该目标加密数据在传输过程中未经篡改,则,该第四子数据可以为上述第一子数据对应的各个第一位置编号和一个第二子数据。
例如,针对上述例子,前述若是在第一加密数据的第512字符之后,插入第一组预设字符,第一组预设字符若为第一散列值中的第1个字符“A”、第1个字符“A”在第一散列值中的位置编号“1”,预设散列值中的“0x76”,在第一加密数据的第1024字符后,插入第二组预设字符,第二组预设字符若为第一散列值中的第2个字符“a”、第2个字符“a”在第一散列值中的位置编号“2”,预设散列值中的“0x50”,在第一加密数据的第1536字符后,插入第三组预设字符,第三组预设字符若为第一散列值中的第3个字符“B”、第3个字符“B”在第一散列值中的位置编号“3”,预设散列值中的“0x59”……,在第一加密数据的第16384字符后,插入第32组预设字符,第32组预设字符若为第一散列值中的第32个字符“p”、第32个字符“p”在第一散列值中的位置编号“32”,预设散列值中的“0x16”,得到第二加密数据。则,在第一组检验字符“A10x76”中,从头部获取第二预设数量1个字符“A”,得到了第一个第一子数据“A”,也就得到了第一组第一验证值“A”。将第一组检验字符中剩余的字符“10x76”确定为第四子数据。则,在第二组检验字符“a20x50”中,从头部获取第二预设数量1个字符“a”,得到了第二个第一子数据“a”,也就得到了第二组第一验证值“a”。将第二组检验字符中剩余的字符“20x50”确定为第四子数据。
步骤305,在所述第四子数据中获取所述第四预设数量的字符,得到多个第二位置编号。
在本发明实施例中,若该目标加密数据在传输过程中未经篡改,则,该第四子数据可以为上述第一子数据对应的各个第一位置编号和一个第二子数据。在第四子数据中获取第四预设数量的字符,若该目标加密数据在传输过程中未经篡改,则,该第四预设数量的字符可以为上述第一子数据中各个字符在第一散列值的所有字符中的位置编号。
例如,针对上述例子,若第一个第四子数据为“10x76”。则,在第四子数据中获取第四预设数量1个字符,得到字符“1”,就是第一个子数据“A”在第一散列值的所有字符中的位置编号1。若第二个第四子数据为“20x50”。则,在第四子数据中获取第四预设数量1个字符,得到字符“2”,就是第一个子数据“a”在第一散列值的所有字符中的位置编号2。
在本发明实施例中,若在数据发送方法中,将第一散列值的所有字符和预设散列值中的所有字符,拼接在第二加密数据的头部和/或尾部,得到目标加密数据。该预设散列值的所有字符的总数量也可以为第六预设数量。则,将目标加密数据的头部和/或尾部两倍的第六预设数量的字符,确定为第一散列值中的所有字符和预设散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据。若在前述数据发送方法中,将第一散列值拼接在了预设散列值的头部和/或尾部,则,将第一散列值中的所有字符和预设散列值中的所有字符组成的整体散列值的头部和/或尾部的第六预设数量的字符,确定为第一散列值,将该整体散列值剩余的字符确定为预设散列值。在该步骤305中还可以包括:在第四子数据中将多个第二位置编号之外的字符确定为一组检验散列值字符。在上述目标加密数据的传输过程中,若未经篡改,该组验证散列值字符可以与前述的第二子数据一致。
在本发明实施例中,可以判断由各组验证散列值的所有字符组成的第三集合,是否为第四集合的子集,若是,则,执行后续步骤。若否,则,认为上述目标加密数据在传输过程中经过了篡改,将上述目标加密数据丢弃。该第四集合可以为从第二加密数据中获取的预设散列值的所有字符组成的集合。具体的,若上述目标加密数据的传输过程中未经篡改,则,该组验证散列值字符可以与前述的第二子数据一致,而上述第二子数据是将预设散列值经过划分得到,则,由各组验证散列值的所有字符组成的第三组合,应该为验证散列值的所有字符组成的第四集合的子集,上述目标加密数据才可能没有被篡改。通过验证散列值字符的判断,便于检验目标加密数据是否被篡改。
步骤306,将各组所述检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,得到插入的散列值字符。
在本发明实施例中,若该目标加密数据在传输过程中未经篡改,则,将各组检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,即,得到了插入的散列值字符。
例如,针对上述例子,前述若是在第一加密数据的第512字符之后,插入第一组预设字符,第一组预设字符若为第一散列值中的第1个字符“A”、第1个字符“A”在第一散列值中的位置编号“1”,预设散列值中的“0x76”,在第一加密数据的第1024字符后,插入第二组预设字符,第二组预设字符若为第一散列值中的第2个字符“a”、第2个字符“a”在第一散列值中的位置编号“2”,预设散列值中的“0x50”,在第一加密数据的第1536字符后,插入第三组预设字符,第三组预设字符若为第一散列值中的第3个字符“B”、第3个字符“B”在第一散列值中的位置编号“3”,预设散列值中的“0x59”……,在第一加密数据的第16384字符后,插入第32组预设字符,第32组预设字符若为第一散列值中的第32个字符“p”第一组检验检验字符对应的验证散列值字符为“A”,得到第一组检验字符中验证散列值字符“A”的位置编号为“1”。第二组检验检验字符对应的验证散列值字符为“a”,得到第二组检验字符中验证散列值字符“a”的位置编号为“1”。第三组检验检验字符对应的验证散列值字符为“B”……第32组检验检验字符对应的验证散列值字符为“p”,得到第32组检验字符中验证散列值字符“p”的位置编号为“32”。将各组所述检验字符对应的各个验证散列值字符,按照多个位置编号进行排序,得到插入的散列值字符可以为“AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp”。
步骤307,在第一集合为第二集合的子集的情况下,将所述第一散列值作为所述第一加密数据的秘钥,进行解密,得到解密数据;所述第一集合为所述插入的散列值字符组成的集合;所述第二集合为所述第一散列值中的所有字符组成的集合。
在本发明实施例中,第一集合为上述插入的散列值字符组成的集合,上述第二集合为上述第一散列值中的所有字符组成的集合。根据前述发送方法可以推出,上述插入的散列值字符中的各个字符为第一散列值中的字符,因此,在第一集合为第二集合的子集的情况下,说明该目标加密数据在传输过程中可能没有受到篡改或攻击,可以将上述第一散列值作为上述第一加密数据的秘钥,具体可以作为解密密钥,进行解密,得到解密数据。
在本发明实施例中,可选的,在将上述第一散列值作为上述第一加密数据的秘钥,具体可以作为解密密钥,进行解密,得到解密数据之前,还可以进一步判断第一集合中各个验证散列值字符的位置编号,与第二集合中第一散列值中对应相同的字符的位置编号是否对应相同,若对应相同,说明该目标加密数据在传输过程中可能没有受到篡改或攻击,可以将上述第一散列值作为上述第一加密数据的秘钥,进行解密,得到解密数据。否则,说明该目标加密数据在传输过程中可能已经受到篡改或攻击,可以将上述第一加密数据丢弃,不作后续处理。
需要说明的是,前述发送方法中的加密算法和此处的解密算法需要对应。例如,前述发送方法中将第一散列值作为密钥,对待发送数据若采用AES加密算法进行加密,则,此处的解密算法为AES解密算法。
在本发明实施例中,在第一集合不是第二集合的子集的情况下,说明该目标加密数据在传输过程中已经受到篡改或攻击,可以将上述第一加密数据丢弃,不作后续处理。
步骤308,将所述解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值,并将所述解密数据剩余的字符确定为待判定数据。
在本发明实施例中,若该目标加密数据在传输过程中未经篡改,则,解密数据的头部和/或尾部第一预设数量的字符即可以为上述待发送数据的长度值,则,可以将解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值。若该目标加密数据在传输过程中未经篡改,则,解密数据剩余的字符,可以为待发送数据,则,可以将解密数据剩余的字符确定为待判定字符。
步骤309,在所述待判定数据对应的消息摘要算法的第二散列值与所述第一散列值一致,且所述待判定数据的长度值与所述第一长度值一致的情况下,将所述待判定数据确定为待发送数据。
在本发明实施例中,可以采用消息摘要算法对上述待判定数据进行运算,得到该待判定数据的第二散列值。在待判定数据的第二散列值与上述第一散列值一致,且判定数据的长度值与上述第一长度值一致的情况下,可以说明该目标加密数据在传输过程中可能没有受到篡改或攻击,则,可以将上述待判定数据确定为待发送数据。
在本发明实施例中,可选的,该发送端可以提前通过经过认证的安全的通信链路将上述待发送数据至目标加密数据的加密规则发送至接收端。或者,该发送端可以提前通过经过认证的安全的通信链路将上述目标加密数据至待发送数据的解密规则发送至接收端,由该接收端根据上述规则根据上述数据接收方法将上述目标加密数据解密还原至待发送数据。
在本发明实施例中,接收发送端发送的目标加密数据;将所述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据;在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将所述第二加密数据中的剩余字符确定为第一加密数据;所述第七预设数量等于所述第五预设数量、第二预设数量、第三预设数量以及第四预设数量的和;在一组所述检验字符中,从头部和/或尾部依次获取所述第二预设数量的字符,得到一组验证散列值字符,并将一组所述检验字符中剩余的字符确定为第四子数据;在所述第四子数据中获取所述第四预设数量的字符,得到多个第二位置编号;将各组所述检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,得到插入的散列值字符;在第一集合为第二集合的子集的情况下,将所述第一散列值作为所述第一加密数据的秘钥,进行解密,得到解密数据;所述第一集合为所述插入的散列值字符组成的集合;所述第二集合为所述第一散列值中的所有字符组成的集合;将所述解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值,并将所述解密数据剩余的字符确定为待判定数据;在所述待判定数据对应的消息摘要算法的第二散列值与所述第一散列值一致,且所述待判定数据的长度值与所述第一长度值一致的情况下,将所述待判定数据确定为待发送数据。本申请处理得到的待发送数据在传输过程中可能没有受到篡改或攻击,安全性能高。
实施例四
参照图5,图5示出了本发明实施例四中提供的数据接收方法的流程图,应用于接收端,该接收端可以参照前述记载,为了避免重复,此处不再赘述。该方法具体可以包括如下步骤:
步骤401,接收发送端发送的目标加密数据。
步骤402,将所述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据。
在本发明实施例中,该步骤401和步骤402可以分别参照前述实施例中步骤301、步骤302中的相关记载,为了避免重复,此处不再赘述。
步骤403,将所述第二加密数据每隔所述第七预设数量的字符划分为多个第五子数据。
在本发明实施例中,该第七预设数量等于上述五预设数量、第二预设数量、第三预设数量以及第四预设数量的和。可以将该第二加密数据每隔该第七预设数量的字符划分为多个第五子数据。
步骤404,在每个所述第五子数据中,依次获取所述第五预设数量的字符之后的所有字符,得到多组检验字符,并将所述第二加密数据中的剩余字符确定为第一加密数据;所述第七预设数量等于所述第五预设数量、第二预设数量、第三预设数量以及第四预设数量的和。
在本发明实施例中,每个第五子数据中,第五预设数量的字符之后的所有字符可能为数据发送方法中依次插入的各组预设字符,可以在每个第五子数据中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将该第二加密数据中的剩余字符确定为第一加密数据。
步骤405,在一组所述检验字符中,从头部和/或尾部依次获取所述第二预设数量的字符,得到一组验证散列值字符,并将一组所述检验字符中剩余的字符确定为第四子数据。
步骤406,在所述第四子数据中获取所述第四预设数量的字符,得到多个第二位置编号。
步骤407,将各组所述检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,得到插入的散列值字符。
步骤408,在第一集合为第二集合的子集的情况下,将所述第一散列值作为所述第一加密数据的秘钥,进行解密,得到解密数据;所述第一集合为所述插入的散列值字符组成的集合;所述第二集合为所述第一散列值中的所有字符组成的集合。
步骤409,将所述解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值,并将所述解密数据剩余的字符确定为待判定数据。
步骤410,在所述待判定数据对应的消息摘要算法的第二散列值与所述第一散列值一致,且所述待判定数据的长度值与所述第一长度值一致的情况下,将所述待判定数据确定为待发送数据。
在本发明实施例中,该步骤405和步骤410可以分别参照前述实施例中步骤304至步骤309中的相关记载,为了避免重复,此处不再赘述。
在本发明实施例中,接收发送端发送的目标加密数据;将所述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据;在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将所述第二加密数据中的剩余字符确定为第一加密数据;所述第七预设数量等于所述第五预设数量、第二预设数量、第三预设数量以及第四预设数量的和;在一组所述检验字符中,从头部和/或尾部依次获取所述第二预设数量的字符,得到一组验证散列值字符,并将一组所述检验字符中剩余的字符确定为第四子数据;在所述第四子数据中获取所述第四预设数量的字符,得到多个第二位置编号;将各组所述检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,得到插入的散列值字符;在第一集合为第二集合的子集的情况下,将所述第一散列值作为所述第一加密数据的秘钥,进行解密,得到解密数据;所述第一集合为所述插入的散列值字符组成的集合;所述第二集合为所述第一散列值中的所有字符组成的集合;将所述解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值,并将所述解密数据剩余的字符确定为待判定数据;在所述待判定数据对应的消息摘要算法的第二散列值与所述第一散列值一致,且所述待判定数据的长度值与所述第一长度值一致的情况下,将所述待判定数据确定为待发送数据。本申请处理得到的待发送数据在传输过程中可能没有受到篡改或攻击,安全性能高。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定都是本申请实施例所必须的。同时,各个实施例主要描述了与其他实施例不同的部分,各个实施例之间可以相互参照。
实施例五
参照图6所示,图6示出了本发明实施例五提供的一种发送端500的结构框图,所述发送端500可以包括:
第一散列值获取模块501,用于利用消息摘要算法对待发送数据进行运算,得到所述待发送数据的第一散列值;
第一拼接模块502,用于将所述待发送数据的长度值拼接在所述待发送数据的头部和/或尾部,得到待加密数据;所述待发送数据的长度值对应的字符数量为第一预设数量;
加密模块503,用于将所述第一散列值作为密钥,对所述待加密数据进行加密,得到第一加密数据;
第二拼接模块504,用于将所述第一散列值每隔第二预设数量的字符划分为多个第一子数据,并将一个所述第一子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符;其中,所述待插入字符包括:各个第一位置编号和一个第二子数据;各个所述第一位置编号为所述第一子数据中各个字符在所述第一散列值的所有字符中的位置序号;所述各个第一位置编号的字符数量为第四预设数量;所述第二子数据为将预设散列值每隔第三预设数量的字符划分后得到的各个子数据;
插入模块505,用于在所述第一加密数据中每隔第五预设数量的字符,依次插入一组所述预设字符,得到第二加密数据;
第三拼接模块506,用于将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据;所述第一散列值的所有字符的总数量为第六预设数量;
发送模块507,用于将所述目标加密数据发送至接收端。
可选的,在上述图6的基础上,参照图7所示,所述插入模块505可以包括:
第一划分单元5051,用于将所述第一加密数据每隔所述第五预设数量的字符划分为多个第三子数据;
插入单元5052,用于在各个相邻的所述第三子数据之间,依次插入一组所述预设字符,得到第二加密数据。
可选的,所述发送端500还可以包括:
判断模块508,用于判断所述第二加密数据中是否插入了所述第一散列值中的所有字符;
所述第三拼接模块506,可以包括:
拼接单元5061,用于在所述第二加密数据中未插入所述第一散列值中的所有字符的情况下,将所述第一散列值的所有字符作为整体,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
可选的,所述第三拼接模块506,包括:
第二拼接单元,用于将所述第一散列值的所有字符和所述预设散列值中的所有字符,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
可选的,所述第二拼接单元,包括:
第一拼接子单元,用于在所述第一散列值的头部和/或尾部,拼接所述预设散列值中的所有字符,得到待拼接数据;
第二拼接子单元,用于将所述待拼接数据,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
本发明实施例提供的发送端能够实现图1至图3的方法实施例中发送端实现的各个过程,且能达到相同或相似的有益效果,为避免重复,这里不再赘述。
这样,先将待发送数据的长度值拼接在待发送数据的头部和/或尾部,得到待加密数据,然后采用第一散列值作为密钥,对该待加密数据进行加密,得到第一加密数据。将第一散列值每隔第二预设数量的字符划分为多个第一子数据,将一个子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符,该待插入字符包括了第一子数据中各个字符在第一散列值的所有字符中的位置序号,由此,后续接收端利于通过上述位置序号进行排序,可以得到部分或全部的第一散列值,利于验证目标加密数据的安全性。同时,该待插入字符包括了预设散列值的各个子数据,接收端可以根据预设散列值也对目标加密数据进行安全性验证,利于验证目标加密数据的安全性。又在第一加密数据中每隔第五预设数量的字符依次插入了一组预设字符,得到第二加密数据,又在第二加密数据的头部和/或尾部拼接了第一散列值中的所有字符才得到目标加密数据,相当于多进行了五次加密,加密复杂,数据传输过程中安全性能高。而且,将第一散列值中的所有字符均拼接在第二加密数据中,使得目标加密数据中包括了第一散列值中的所有字符,一方面不管第一加密数据的长短,均可以保证后续接收端可以采用完整的第一散列值进行解密,另一方面便于接收端利用拼接的第一散列值的所有字符校验依次插入的第一散列值中的字符的准确性,由此进一步校验该目标加密数据在传输过程中是否被篡改等,利于提升数据传输的安全性和完整性。
实施例六
参照图8所示,图8示出了本发明实施例六提供的一种接收端600的结构框图,所述接收端可以包括:
接收模块601,用于接收发送端发送的目标加密数据;
第二加密数据获取模块602,用于将所述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据;
第一加密数据获取模块603,用于在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将所述第二加密数据中的剩余字符确定为第一加密数据;所述第七预设数量等于所述第五预设数量、第二预设数量、第三预设数量以及第四预设数量的和;
验证散列值字符获取模块604,用于在一组所述检验字符中,从头部和/或尾部依次获取所述第二预设数量的字符,得到一组验证散列值字符,并将一组所述检验字符中剩余的字符确定为第四子数据;
位置编号获取模块605,用于在所述第四子数据中获取所述第四预设数量的字符,得到多个第二位置编号;
排序模块606,用于将各组所述检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,得到插入的散列值字符;
解密模块607,用于在第一集合为第二集合的子集的情况下,将所述第一散列值作为所述第一加密数据的秘钥,进行解密,得到解密数据;所述第一集合为所述插入的散列值字符组成的集合;所述第二集合为所述第一散列值中的所有字符组成的集合;
待判定数据获取模块608,用于将所述解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值,并将所述解密数据剩余的字符确定为待判定数据;
待发送数据获取模块609,用于在所述待判定数据对应的消息摘要算法的第二散列值与所述第一散列值一致,且所述待判定数据的长度值与所述第一长度值一致的情况下,将所述待判定数据确定为待发送数据。
可选的,在上述图8的基础上,参照图9所示,所述第一加密数据获取模块603,可以包括:
第二划分单元6031,用于将所述第二加密数据每隔所述第七预设数量的字符划分为多个第五子数据;
第一加密数据获取单元6032,用于在每个所述第五子数据中,依次获取所述第五预设数量的字符之后的所有字符,得到多组检验字符。
本发明实施例提供的接收端能够实现图4至图5的方法实施例中接收端实现的各个过程,为避免重复,这里不再赘述。
这样,接收发送端发送的目标加密数据;将所述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据;在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将所述第二加密数据中的剩余字符确定为第一加密数据;所述第七预设数量等于所述第五预设数量、第二预设数量、第三预设数量以及第四预设数量的和;在一组所述检验字符中,从头部和/或尾部依次获取所述第二预设数量的字符,得到一组验证散列值字符,并将一组所述检验字符中剩余的字符确定为第四子数据;在所述第四子数据中获取所述第四预设数量的字符,得到多个第二位置编号;将各组所述检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,得到插入的散列值字符;在第一集合为第二集合的子集的情况下,将所述第一散列值作为所述第一加密数据的秘钥,进行解密,得到解密数据;所述第一集合为所述插入的散列值字符组成的集合;所述第二集合为所述第一散列值中的所有字符组成的集合;将所述解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值,并将所述解密数据剩余的字符确定为待判定数据;在所述待判定数据对应的消息摘要算法的第二散列值与所述第一散列值一致,且所述待判定数据的长度值与所述第一长度值一致的情况下,将所述待判定数据确定为待发送数据。本申请处理得到的待发送数据在传输过程中可能没有受到篡改或攻击,安全性能高。
本发明实施例还提供一种设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如图1至图3中任一所述的数据发送方法的步骤,或,所述计算机程序被所述处理器执行时实现如图4至图5中任一所述的数据接收方法的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述数据接收方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,上述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种数据发送方法,应用于发送端,其特征在于,所述方法包括:
利用消息摘要算法对待发送数据进行运算,得到所述待发送数据的第一散列值;
将所述待发送数据的长度值拼接在所述待发送数据的头部和/或尾部,得到待加密数据;所述待发送数据的长度值对应的字符数量为第一预设数量;
将所述第一散列值作为密钥,对所述待加密数据进行加密,得到第一加密数据;
将所述第一散列值每隔第二预设数量的字符划分为多个第一子数据,并将一个所述第一子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符;其中,所述待插入字符包括:各个第一位置编号和一个第二子数据;各个所述第一位置编号为所述第一子数据中各个字符在所述第一散列值的所有字符中的位置序号;所述各个第一位置编号的字符数量为第四预设数量;所述第二子数据为将预设散列值每隔第三预设数量的字符划分后得到的各个子数据;
在所述第一加密数据中每隔第五预设数量的字符,依次插入一组所述预设字符,得到第二加密数据;
将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据;所述第一散列值的所有字符的总数量为第六预设数量;
将所述目标加密数据发送至接收端。
2.根据权利要求1所述的方法,其特征在于,所述在所述第一加密数据中每隔第五预设数量的字符,依次插入一组所述预设字符,得到第二加密数据,包括:
将所述第一加密数据每隔所述第五预设数量的字符划分为多个第三子数据;
在各个相邻的所述第三子数据之间,依次插入一组所述预设字符,得到第二加密数据。
3.根据权利要求1所述的方法,其特征在于,所述将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据之前,还包括:
判断所述第二加密数据中是否插入了所述第一散列值中的所有字符;
所述将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据,包括:
在所述第二加密数据中未插入所述第一散列值中的所有字符的情况下,将所述第一散列值的所有字符作为整体,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
4.根据权利要求1所述的方法,其特征在于,所述将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据,包括:
将所述第一散列值的所有字符和所述预设散列值中的所有字符,拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据。
5.一种数据接收方法,应用于接收端,其特征在于,所述方法包括:
接收发送端发送的目标加密数据;
将所述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据;
在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将所述第二加密数据中的剩余字符确定为第一加密数据;所述第七预设数量等于所述第五预设数量、第二预设数量、第三预设数量以及第四预设数量的和;
在一组所述检验字符中,从头部和/或尾部依次获取所述第二预设数量的字符,得到一组验证散列值字符,并将一组所述检验字符中剩余的字符确定为第四子数据;
在所述第四子数据中获取所述第四预设数量的字符,得到多个第二位置编号;
将各组所述检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,得到插入的散列值字符;
在第一集合为第二集合的子集的情况下,将所述第一散列值作为所述第一加密数据的秘钥,进行解密,得到解密数据;所述第一集合为所述插入的散列值字符组成的集合;所述第二集合为所述第一散列值中的所有字符组成的集合;
将所述解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值,并将所述解密数据剩余的字符确定为待判定数据;
在所述待判定数据对应的消息摘要算法的第二散列值与所述第一散列值一致,且所述待判定数据的长度值与所述第一长度值一致的情况下,将所述待判定数据确定为待发送数据。
6.根据权利要求5所述的方法,其特征在于,所述在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,包括:
将所述第二加密数据每隔所述第七预设数量的字符划分为多个第五子数据;
在每个所述第五子数据中,依次获取所述第五预设数量的字符之后的所有字符,得到多组检验字符。
7.一种发送端,其特征在于,包括:
第一散列值获取模块,用于利用消息摘要算法对待发送数据进行运算,得到所述待发送数据的第一散列值;
第一拼接模块,用于将所述待发送数据的长度值拼接在所述待发送数据的头部和/或尾部,得到待加密数据;所述待发送数据的长度值对应的字符数量为第一预设数量;
加密模块,用于将所述第一散列值作为密钥,对所述待加密数据进行加密,得到第一加密数据;
第二拼接模块,用于将所述第一散列值每隔第二预设数量的字符划分为多个第一子数据,并将一个所述第一子数据拼接在一组待插入字符的头部和/或尾部,得到一组预设字符;其中,所述待插入字符包括:各个第一位置编号和一个第二子数据;各个所述第一位置编号为所述第一子数据中各个字符在所述第一散列值的所有字符中的位置序号;所述各个第一位置编号的字符数量为第四预设数量;所述第二子数据为将预设散列值每隔第三预设数量的字符划分后得到的各个子数据;
插入模块,用于在所述第一加密数据中每隔第五预设数量的字符,依次插入一组所述预设字符,得到第二加密数据;
第三拼接模块,用于将所述第一散列值的所有字符拼接在所述第二加密数据的头部和/或尾部,得到目标加密数据;所述第一散列值的所有字符的总数量为第六预设数量;
发送模块,用于将所述目标加密数据发送至接收端。
8.一种接收端,其特征在于,包括:
接收模块,用于接收发送端发送的目标加密数据;
第二加密数据获取模块,用于将所述目标加密数据的头部和/或尾部第六预设数量的字符,确定为第一散列值中的所有字符,并将所述目标加密数据剩余的字符确定为第二加密数据;
第一加密数据获取模块,用于在所述第二加密数据每第七预设数量的字符中,依次获取第五预设数量的字符之后的所有字符,得到多组检验字符,并将所述第二加密数据中的剩余字符确定为第一加密数据;所述第七预设数量等于所述第五预设数量、第二预设数量、第三预设数量以及第四预设数量的和;
验证散列值字符获取模块,用于在一组所述检验字符中,从头部和/或尾部依次获取所述第二预设数量的字符,得到一组验证散列值字符,并将一组所述检验字符中剩余的字符确定为第四子数据;
位置编号获取模块,用于在所述第四子数据中获取所述第四预设数量的字符,得到多个第二位置编号;
排序模块,用于将各组所述检验字符对应的各个所述验证散列值字符,按照多个所述位置编号进行排序,得到插入的散列值字符;
解密模块,用于在第一集合为第二集合的子集的情况下,将所述第一散列值作为所述第一加密数据的秘钥,进行解密,得到解密数据;所述第一集合为所述插入的散列值字符组成的集合;所述第二集合为所述第一散列值中的所有字符组成的集合;
待判定数据获取模块,用于将所述解密数据的头部和/或尾部第一预设数量的字符,确定为第一长度值,并将所述解密数据剩余的字符确定为待判定数据;
待发送数据获取模块,用于在所述待判定数据对应的消息摘要算法的第二散列值与所述第一散列值一致,且所述待判定数据的长度值与所述第一长度值一致的情况下,将所述待判定数据确定为待发送数据。
9.一种设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-4中任一所述的数据发送方法的步骤,或,所述计算机程序被所述处理器执行时实现如权利要求5-6中任一所述的数据接收方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4中任一所述的数据发送方法的步骤,或,所述计算机程序被处理器执行时实现如权利要求5-6中任一所述的数据接收方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911341188.5A CN111211888B (zh) | 2019-12-23 | 2019-12-23 | 数据发送方法、数据接收方法、发送端及接收端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911341188.5A CN111211888B (zh) | 2019-12-23 | 2019-12-23 | 数据发送方法、数据接收方法、发送端及接收端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111211888A true CN111211888A (zh) | 2020-05-29 |
CN111211888B CN111211888B (zh) | 2023-04-18 |
Family
ID=70789286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911341188.5A Active CN111211888B (zh) | 2019-12-23 | 2019-12-23 | 数据发送方法、数据接收方法、发送端及接收端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111211888B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112327034A (zh) * | 2020-09-29 | 2021-02-05 | 国网山东省电力公司冠县供电公司 | 一种电压稳定性监测方法 |
CN112367171A (zh) * | 2020-10-27 | 2021-02-12 | 杭州安恒信息技术股份有限公司 | 一种基于rsa和MD5的数据传输方法及组件 |
CN112988331A (zh) * | 2021-04-23 | 2021-06-18 | 广州大一互联网络科技有限公司 | 一种云平台虚拟机之间的安全数据交换方法 |
CN113254975A (zh) * | 2021-06-15 | 2021-08-13 | 湖南三湘银行股份有限公司 | 数字金融数据分享方法 |
CN113872753A (zh) * | 2021-12-01 | 2021-12-31 | 北京华云安信息技术有限公司 | 基于sha256序列形式的数据的加密传输方法和装置 |
CN114398206A (zh) * | 2022-01-06 | 2022-04-26 | 北京德风新征程科技有限公司 | 信息存储方法、装置、电子设备和计算机可读介质 |
CN114827226A (zh) * | 2022-06-30 | 2022-07-29 | 深圳市智联物联科技有限公司 | 一种工控设备远程管理方法 |
CN116132159A (zh) * | 2023-02-02 | 2023-05-16 | 马上消费金融股份有限公司 | 数据加密方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050235145A1 (en) * | 2002-12-05 | 2005-10-20 | Canon Kabushiki Kaisha | Secure file format |
CN103840935A (zh) * | 2013-12-31 | 2014-06-04 | 技嘉科技股份有限公司 | 开放系统之函式库的加密及解密方法 |
CN108989287A (zh) * | 2018-06-13 | 2018-12-11 | 平安科技(深圳)有限公司 | 加密方法、装置、终端设备及存储介质 |
CN110061840A (zh) * | 2019-03-12 | 2019-07-26 | 平安科技(深圳)有限公司 | 数据加密方法、装置、计算机设备及存储介质 |
-
2019
- 2019-12-23 CN CN201911341188.5A patent/CN111211888B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050235145A1 (en) * | 2002-12-05 | 2005-10-20 | Canon Kabushiki Kaisha | Secure file format |
CN103840935A (zh) * | 2013-12-31 | 2014-06-04 | 技嘉科技股份有限公司 | 开放系统之函式库的加密及解密方法 |
CN108989287A (zh) * | 2018-06-13 | 2018-12-11 | 平安科技(深圳)有限公司 | 加密方法、装置、终端设备及存储介质 |
CN110061840A (zh) * | 2019-03-12 | 2019-07-26 | 平安科技(深圳)有限公司 | 数据加密方法、装置、计算机设备及存储介质 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112327034B (zh) * | 2020-09-29 | 2022-10-04 | 国网山东省电力公司冠县供电公司 | 一种电压稳定性监测方法 |
CN112327034A (zh) * | 2020-09-29 | 2021-02-05 | 国网山东省电力公司冠县供电公司 | 一种电压稳定性监测方法 |
CN112367171A (zh) * | 2020-10-27 | 2021-02-12 | 杭州安恒信息技术股份有限公司 | 一种基于rsa和MD5的数据传输方法及组件 |
CN112988331A (zh) * | 2021-04-23 | 2021-06-18 | 广州大一互联网络科技有限公司 | 一种云平台虚拟机之间的安全数据交换方法 |
CN112988331B (zh) * | 2021-04-23 | 2021-11-26 | 广州大一互联网络科技有限公司 | 一种云平台虚拟机之间的安全数据交换方法 |
CN113254975A (zh) * | 2021-06-15 | 2021-08-13 | 湖南三湘银行股份有限公司 | 数字金融数据分享方法 |
CN113254975B (zh) * | 2021-06-15 | 2021-09-28 | 湖南三湘银行股份有限公司 | 数字金融数据分享方法 |
CN113872753A (zh) * | 2021-12-01 | 2021-12-31 | 北京华云安信息技术有限公司 | 基于sha256序列形式的数据的加密传输方法和装置 |
CN114398206A (zh) * | 2022-01-06 | 2022-04-26 | 北京德风新征程科技有限公司 | 信息存储方法、装置、电子设备和计算机可读介质 |
CN114827226A (zh) * | 2022-06-30 | 2022-07-29 | 深圳市智联物联科技有限公司 | 一种工控设备远程管理方法 |
CN114827226B (zh) * | 2022-06-30 | 2022-09-09 | 深圳市智联物联科技有限公司 | 一种工控设备远程管理方法 |
CN116132159A (zh) * | 2023-02-02 | 2023-05-16 | 马上消费金融股份有限公司 | 数据加密方法、装置、电子设备及存储介质 |
CN116132159B (zh) * | 2023-02-02 | 2024-04-09 | 马上消费金融股份有限公司 | 数据加密方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111211888B (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111211888B (zh) | 数据发送方法、数据接收方法、发送端及接收端 | |
CN110493197B (zh) | 一种登录处理方法及相关设备 | |
CN109347627B (zh) | 数据加解密方法、装置、计算机设备及存储介质 | |
US6973187B2 (en) | Block encryption method and schemes for data confidentiality and integrity protection | |
US8060743B2 (en) | Cryptographic method and apparatus | |
US7570759B2 (en) | System and method for secure encryption | |
CN107306181B (zh) | 鉴权系统及其鉴权信息的加密、验证方法与装置 | |
WO2014136386A1 (ja) | タグ生成装置、タグ生成方法およびタグ生成プログラム | |
CN114844728B (zh) | 序列化数据安全通信方法及大数据平台 | |
CN111555859A (zh) | Sm4-gcm算法及在网络安全协议中的应用 | |
CN102946315B (zh) | 一种采用分组方式构造mac码的方法及系统 | |
KR101088549B1 (ko) | 송신용 애플리케이션 패킷 처리 방법과 수신된 애플리케이션 패킷 세그먼트 처리 방법 | |
US8122247B2 (en) | Processing method for message integrity with tolerance for non-sequential arrival of message data | |
CN111988301A (zh) | 一种客户端防黑客暴力攻击的安全通讯方法 | |
WO2022237440A1 (en) | Authenticated encryption apparatus with initialization-vector misuse resistance and method therefor | |
CN108599922B (zh) | 新型含密钥消息完整性认证码的生成方法 | |
CN111869160A (zh) | 用于将消息从发送装置安全传输到接收装置的方法和设备 | |
KR20040083794A (ko) | 어플리케이션 데이터의 암호화 및 복호화 방법 | |
Rogobete et al. | Hashing and Message Authentication Code Implementation. An Embedded Approach. | |
CN112668353A (zh) | 巴枪认证方法、装置、设备和存储介质 | |
CN112866288A (zh) | 一种双明文传输的数据对称加密方法 | |
EP2683112B1 (en) | Secure message transmission | |
CN116455892B (zh) | 文件传输方法、传输装置及终端设备 | |
CN113852471B (zh) | 一种基于资源受限场景的数据通信方法及装置 | |
CN111641493A (zh) | 基于云计算的物流区块链的共识方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 311200 353, block a, 79 Jinyi Road, Xiaoshan Economic and Technological Development Zone, Xiaoshan District, Hangzhou City, Zhejiang Province Applicant after: Newpoint Intelligent Technology Group Co.,Ltd. Address before: 311200 353, block a, 79 Jinyi Road, Xiaoshan Economic and Technological Development Zone, Xiaoshan District, Hangzhou City, Zhejiang Province Applicant before: Newpoint Enterprise Management Group Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |