一种文件校验方法及系统
技术领域
本发明属于计算机
技术领域
,尤其涉及一种文件校验方法及系统。背景技术
随着汽车电子技术的不断发展,对于文件传输过程中的安全性、文件传输的完整性要求越来越高,特别是在整车上各种控制器下载文件的过程中,一旦文件在传输过程中出现错漏,控制器得到的文件不完整,将有可能直接导致控制器无法实现既定功能,甚至被篡改功能,影响车辆的安全性。
为校验传输文件的完整性,现有技术大都采用CRC32冗余算法,该算法的校验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码,从而构成一个总长为(p+r)位的二进制序列校验码,这一二进制序列校验码与待传输文件的数据序列之间存在着特定的关系。如果因干扰等原因使待传输文件的数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过校验二者之间的对应关系,就可以实现对待传输文件完整性的检验。
然而,CRC32冗余算法属于典型的对称性加密算法,通信双方使用相同的密钥,安全性较差,已经难以满足实际应用需求。
发明内容
有鉴于此,本发明的目的在于提供一种文件校验方法及系统,基于非对称算法实现待传输文件的完整性校验,上位机与下位机使用不同的密钥,破译难度大,能够提高文件完整性校验的准确性,具体方案如下:
第一方面,本发明提供的文件校验方法,包括:
上位机利用预设密钥对中的私钥对待传输文件加密,并计算加密后的待传输文件的哈希值,得到第一哈希值;
上位机发送所述待传输文件和所述第一哈希值;
下位机接收所述第一哈希值和所述待传输文件,并计算所述待传输文件的哈希值,得到第二哈希值;
下位机使用所述预设密钥对中的公钥对所述第一哈希值进行解密,得到第三哈希值,并在所述第二哈希值与所述第三哈希值一致情况下判定所述待传输文件完整。
可选的,上位机计算加密后的待传输文件的哈希值,得到第一哈希值的过程,包括:
利用预设数字签名算法计算加密后的待传输文件的哈希值,得到第一哈希值。
可选的,上位机发送所述第一哈希值的过程,包括:
将所述第一哈希值添加至诊断报文中的预设比特位;
发送所述诊断报文。
可选的,下位机接收所述第一哈希值的过程,包括:
获取所述诊断报文;
解析所述诊断报文,提取解析结果中预设比特位记录的第一哈希值。
可选的,下位机计算所述待传输文件的哈希值,得到第二哈希值的过程,包括:
利用预设数字签名算法计算所述待传输文件的哈希值,得到第二哈希值。
第二方面,本发明提供一种文件校验系统,包括:
第一计算单元,利用预设密钥对中的私钥对待传输文件加密,并计算加密后的待传输文件的哈希值,得到第一哈希值;
发送单元,发送所述待传输文件和所述第一哈希值;
第二计算单元,接收所述第一哈希值和所述待传输文件,并计算所述待传输文件的哈希值,得到第二哈希值;
解密单元,使用所述预设密钥对中的公钥对所述第一哈希值进行解密,得到第三哈希值;
判定单元,判断所述第二哈希值与所述第三哈希值是否一致,若一致,判定所述待传输文件完整,若不一致,判定所述待传输文件不完整。
可选的,所述第一计算单元进一步包括:
利用预设数字签名算法计算加密后的待传输文件的哈希值,得到第一哈希值。
可选的,所述发送单元进一步包括:
将所述第一哈希值添加至诊断报文中的预设比特位;
发送所述诊断报文。
可选的,所述第二计算单元进一步包括:
获取所述诊断报文;
解析所述诊断报文,得到一解析结果,提取该解析结果中预设比特位记录的第一哈希值。
可选的,所述第二计算单元进一步包括:
利用预设数字签名算法计算所述待传输文件的哈希值,得到第二哈希值。
上述本发明提供的文件校验方法,上位机利用预设密钥对中的私钥对待传输文件进行加密,并计算加密后的待传输文件对应的第一哈希值,下位机在获取待传输文件和第一哈希值之后,计算所得待传输文件的哈希值,得到第二哈希值,然后,下位机使用预设密钥对中的公钥对第一哈希值进行解密,得到第三哈希值,由于预设密钥对中的私钥和公钥是对应的,如果待传输文件在传输过程中出现错漏,解密后得到的第三哈希值应该与第二哈希值一致,因此,下位机在所得第二哈希值和第三哈希值一致的情况下,即可判定待传输文件是完整的。本发明提供的文件校验方法,基于非对称加密算法实现,利用非对称算法中预设密钥对以及相应的哈希值实现待传输文件的完整性校验,与现有技术中使用的对称性算法相比,上位机与下位机使用不同的密钥,破译难度大,能够提高文件完整性校验的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种文件校验方法的流程图;
图2是本发明实施例提供的一种文件校验系统的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
可选的,参见图1,图1是本发明实施例提供的一种文件校验方法的流程图,该方法可应用于上位机和下位机,具体的,上位机可以笔记本电脑、PC机等电子设备,下位机可以是整车上的任一需要从上位机下载文件的控制器;参照图1,本发明实施例提供的文件校验方法的流程,可以包括:
S100、上位机利用预设密钥对中的私钥对待传输文件加密,得到加密后的待传输文件。
本发明实施例提供的文件校验方法,对于待传输文件的加密过程采用非对称加密算法实现,基于非对称加密算法的基本原理可知,非对称加密算法在实际应用中需要用到公钥和与该公钥对应的私钥,公钥和私钥工作组成密钥对,进行文件传输的双方一方持有公钥,另外一方则持有私钥。
基于这一前提,本发明实施例提供的文件校验方法中,提供一组包括公钥和公钥对应的私钥的预设密钥对,进一步的,上位机拥有预设密钥对中的私钥,相应的,下位机则拥有预设密钥对中的公钥。
在发送待传输文件之前,上位机首先利用预设密钥对中的私钥对待传输文件进行加密,从而得到加密后的待传输文件。
可选的,本发明实施例中预设密钥对基于RSA算法实现。RSA算法提供公钥和私钥的基本原理在于:根据数论,寻求两个大质数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
基于这一基本原理,基于RSA算法得到本发明实施例使用的预设密钥对的基本过程为:
首先,随机选择两个不相等的质数p和q,计算p和q的乘积,则有n=p×q。根据欧拉函数可以想到,若一个数n可以分解成两个质数的乘积,则一定有:基于此,可以随机选择一个整数e,使e满足且e与互质。
进一步的,根据欧拉定理,如果两个正整数a和n互质,则n的欧拉函数可以让下面等式成立:令则ab≡1(mod n)。
由于e与互质,对于e的模反元素d,则有ed≡1(mod n)。该式子等价于(k为任意正整数)。
由此可以求解得到(d,k)。最终,将其中的(n,e)组成公钥,(n,d)组成私钥。n的长度就是密钥的长度,在实际使用中密钥的长度一般为1024位,若要求传输文件的安全性极高,可以选用2048位的密钥长度。
实际应用中,可基于公式m=ce mod n,并结合相应的加密算法,对待传输文件进行加密,即可得到加密后的待传输文件,其中,m表示加密后的待传输文件,c表示待传输文件。
S110、上位机计算加密后的待传输文件的哈希值,得到第一哈希值。
对于加密后的待传输文件的哈希值的计算,可以利用预设数字签名算法计算得到,比如,可以使用SHA-256算法计算待传输文件的哈希值,进而得到第一哈希值。
SHA-256算法是一种适用于数字签名标准中相关要求的数字签名算法,对于长度小于2^64位的文件,可以生成一个被称为消息摘要的256位的散列值,亦即本步骤中述及的哈希值,由于所得消息摘要具有长度较短、位数固定等特点,可以用来验证传输文件的完整性。
哈希值,可以理解为从任何一种数据中创建小的“数字指纹”,通过哈希函数,具体的,可以是SHA-256算法,待传输文件压缩成摘要,使得数据量有效变小,并将数据的格式固定下来,实际应用中,哈希值通常用一个短的随机字母和数字组成的字符串来代表。
对于任意长度的待传输文件,SHA-256算法都会产生一个256比特位长的哈希值,即本实施例中述及的第一哈希值,该哈希值相当于是一个长度为32个字节的数组,通常用一个长度为64的十六进制字符串来表示。
通过SHA-256算可以计算一个较大的文件的哈希值,若两个文件计算得到的哈希值相同,则可以判定这两个文件完全相同。
需要说明的是,对于基于SHA-256算法计算加密后的待传输文件的哈希值,即第一哈希值的具体过程,可以参照现有技术实现,本发明对于这一过程不做具体限定。
S120、上位机发送待传输文件和第一哈希值至下位机。
在得到加密后的待传输文件的第一哈希值之后,上位机即可将待传输文件和第一哈希值发送至下位机,这里需要强调的是,上位机向下位机传输的是待传输文件,并非加密后的待传输文件。
具体的,在实际应用中,上位机大都是将待传输文件发送至下位机的预设内存区中,并进一步由下位机中固化的BootLoader进一步完成后续的操作,比如待传输文件的更新、安装以及升级等操作。
可选的,一般情况下,上位机与下位机之间是通过CAN总线连接的,上位机与下位机之间的文件传输基于CAN总线协议实现。
基于CAN总线协议中的对于文件传输的相关协议标准,上位机与下位机之间可以通过发起34、36和37服务完成待传输文件的传输,其中,34服务为请求下载服务,36服务为传输数据服务,37服务为请求退出传输过程服务。至于上位机与下位机发起上述各项服务并完成待传输文件传输的具体过程,可以参照现有技术实现,此处不再展开。
而对于第一哈希值的发送,具体可以通过其他途径实现,也就是说,在实际应用中,本步骤中述及的发送待传输文件和发送第一哈希值是通过两个步骤实现的。
可选的,CAN总线协议中还包括有31服务,上位机通过发起31服务,即向下位机发送诊断报文来达到相应的诊断目的。具体的到本发明实施例提供的传输文件校验方法中,可以将第一哈希值添加至诊断报文的预设比特位中,然后由上位机发送诊断报文至下位机,即可实现第一哈希值的传输。
当然,在实际应用中,还可以采用其他方式发送第一哈希值,在不超出本发明核心思想范围的前提下,同样属于本发明保护的范围内。
S130、下位机获取待传输文件和第一哈希值。
基于上述内容可知,在上位机与下位机之间通过CAN总线实现通讯连接的情况下,二者之间可以通过发起不同服务的方式实现待传输文件的传输以及第一哈希值的传输,由于接收方与发送方所执行的操作是相对应的,此处不再对下位机基于CAN总线协议中不同服务的方式接收待传输文件的过程进行展开介绍。
而对于第一哈希值的接收,基于前述内容,下位机接收到诊断报文之后,对诊断报文进行解析,得到一解析结果,然后直接提取该解析结果中预设比特位记录的第一哈希值即可。
当然,在实际应用中,本步骤中下位机所执行的操作,都是由下位机执行固化的BootLoader系统程序实现的。
S140、下位机计算待传输文件的哈希值,得到第二哈希值。
下位机在得到待传输文件之后,即可直接计算待传输文件的哈希值,进而得到第二哈希值。
可以想到的是,上位机和上位机都需要计算哈希值,为了能够达到相互校验的目的,下位机与上位机应该采用相同的算法计算哈希值,因此,如果上位机使用的SHA-256算法计算得到的第一哈希值,那么下位机在此步骤中同样应该利用SHA-256算法计算第二哈希值。
S150、下位机使用预设密钥对中的公钥对第一哈希值进行解密,得到第三哈希值。
根据前述内容可知,非对称算法提供的预设密钥对包括一个私钥和一个公钥,私钥由上位机使用,公钥则有下位机使用。下位机在得到第一哈希值之后,即可使用预设密钥对中与上位机使用的私钥对应的公钥对第一哈希值进行解密计算,得到第三哈希值。
如前所述,上位机基于公式m=ce mod n完成对待传输文件的加密,相应的,在此步骤中,下位机可以基于c=me mod n并结合预设加密算法完成对第一哈希值的解密,进而得到第三哈希值。
S160、下位机判断第二哈希值与第三哈希值是否一致,如果第二哈希值与第三哈希值相同,则执行S170。
基于前述步骤,下位机的第一哈希值是基于采用私钥进行加密处理后的待传输文件得到的,本步骤中第三哈希值是对第一哈希值采用公钥解密后得到的,因此,第三哈希值是与待传输文件的明文数据对应的。进一步的,第二哈希值也是基于待传输文件,即待传输文件的明文数据得到的,因此,如果在待传输文件的传输过程中没有发生数据的错漏改变,第三哈希值应该与第二哈希值相同,否者,二者是不同的。
因此,如果第二哈希值与第三哈希值不同,则可以判定待传输文件不完整。
S170、下位机判定待传输文件完整。
如果经过比较,第二哈希值与第三哈希值相同,则可以判定接收到的待传输文件是完整的。
综上所述,本发明提供的文件校验方法,基于非对称加密算法实现,利用非对称算法中预设密钥对以及相应的哈希值实现待传输文件的完整性校验,与现有技术中使用的对称性算法相比,上位机与下位机使用不同的密钥,破译难度大,能够提高文件完整性校验的准确性。
下面对本发明实施例提供的文件校验系统进行介绍,下文描述的文件校验系统可以认为是为实现本发明实施例提供的文件校验方法,在中央设备中需设置的功能模块架构;下文描述内容可与上文相互参照。
参见图2,图2是本发明实施例提供的一种文件校验系统的结构框图,本实施例提供的文件校验系统,包括:
第一计算单元10,利用预设密钥对中的私钥对待传输文件加密,并计算加密后的待传输文件的哈希值,得到第一哈希值;
发送单元20,发送待传输文件和第一哈希值;
第二计算单元30,接收第一哈希值和待传输文件,并计算待传输文件的哈希值,得到第二哈希值;
解密单元40,使用预设密钥对中的公钥对第一哈希值进行解密,得到第三哈希值;
判定单元50,判断第二哈希值与第三哈希值是否一致,若一致,判定待传输文件完整,若不一致,判定待传输文件不完整。
可选的,第一计算单元10进一步包括:
利用预设数字签名算法计算加密后的待传输文件的哈希值,得到第一哈希值。
可选的,发送单元20进一步包括:
将第一哈希值添加至诊断报文中的预设比特位;
发送诊断报文。
可选的,第二计算单元30进一步包括:
获取诊断报文;
解析诊断报文,得到一解析结果,提取该解析结果中预设比特位记录的第一哈希值。
可选的,第二计算单元30进一步包括:
利用预设数字签名算法计算待传输文件的哈希值,得到第二哈希值。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的核心思想或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:故障检测