本申请涉及信息安全领域,尤其涉及一种消息扩展与压缩方法及相关装置。
背景技术:
1、随着信息化和计算机技术的发展,人们在享受信息化带来的众多好处的同时,网络安全问题已成为信息时代人类共同面临的挑战,为解决这些安全问题,各种安全机制、策略和工具被研究和应用。
2、杂凑算法是密码学中最基本的算法之一,可广泛应用于密码协议、数字签名、消息鉴别等场景中。我国的sm3密码杂凑算法就是一种典型的杂凑算法,它能基于长度为l(l<264)的报文消息,生成长度为256比特的杂凑值,具有较高的安全性,目前已被广泛运用在网上银行、电信运营商、电子商务、企业等众多应用领域。
3、sm3算法的执行过程可以概括成四个步骤:消息填充、消息扩展、迭代压缩、输出结果。其中,消息扩展是将经过消息填充后的数据,扩展为132个消息扩展字,然后基于132个消息扩展字进行迭代压缩,获得最终的杂凑值,而现有的sm3算法在消息扩展过程中,采取的是一轮一轮逐次迭代的方案,会消耗大量的计算资源,拖慢运行速度。
4、有鉴于此,需要针对上述问题提出一种改进的消息扩展与压缩方法。
技术实现思路
1、本申请提供了一种消息扩展与压缩方法及相关装置,用以提高sm3算法的运行效率。
2、第一方面,本申请实施例提供了一种消息扩展与压缩方法,所述方法包括:
3、获取待杂凑的目标消息,并对目标消息进行比特填充,使目标消息包含的比特数为第一设定数值的整数倍;
4、按照第一设定数值,将目标消息划分为多个比特分组;
5、针对多个比特分组,依次进行迭代压缩,其中,在任意一次迭代压缩中,执行以下操作:
6、按照第二设定数值,将一个比特分组划分为m个消息扩展字,其中,
7、第一设定数值是第二设定数值的整数倍;
8、将上一次迭代获得的压缩结果作为目标参量,并基于m个消息扩展字和目标参量,采用预设的压缩函数,获得当前的压缩结果;
9、将最后一次迭代获得的压缩结果作为目标消息的杂凑结果,并将杂凑结果和目标消息发往目标接收方。
10、第二方面,本申请实施例还提供了一种消息扩展与压缩装置,所述装置包括:
11、获取模块,用于获取待杂凑的目标消息,并对目标消息进行比特填充,使目标消息包含的比特数为第一设定数值的整数倍;
12、分组模块,用于按照第一设定数值,将目标消息划分为多个比特分组;
13、压缩模块,用于针对多个比特分组,依次进行迭代压缩,其中,在任意一次迭代压缩中,执行以下操作:
14、按照第二设定数值,将一个比特分组划分为m个消息扩展字,其中,
15、第一设定数值是第二设定数值的整数倍;
16、将上一次迭代获得的压缩结果作为目标参量,并基于m个消息扩展字和目标参量,采用预设的压缩函数,获得当前的压缩结果;
17、发送模块,用于将最后一次迭代获得的压缩结果作为目标消息的杂凑结果,并将杂凑结果和目标消息发往目标接收方。
18、可选的,基于m个消息扩展字和目标参量,采用预设的压缩函数,获得当前的压缩结果时,压缩模块用于:
19、将m个消息扩展字,作为向量分量,构建一组扩展字向量,其中,每一个扩展字向量包含相同数量的向量分量;
20、基于一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果;
21、基于初始压缩结果,采用预设的第二压缩函数,获得当前的压缩结果。
22、可选的,基于一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果时,压缩模块用于:
23、重组一组扩展字向量中的各个向量分量,获得一组临时向量;
24、针对一组临时向量执行预设的循环移位和融合操作,获得一个补位扩展字向量;
25、基于一个补位扩展字向量,以及一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果。
26、可选的,基于一个补位扩展字向量,以及一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果时,压缩模块用于:
27、基于一个补位扩展字向量和一组扩展字向量共同组成的向量池,依次对目标参量进行迭代更新,在一次更新过程中,执行以下操作:
28、从向量池中选取固定数量的扩展字向量,作为向量参量;
29、基于向量参量更新目标参量,获得中间目标参量;
30、基于中间目标参量和多个预设常量,获得初始压缩结果。
31、可选的,基于初始压缩结果和一组扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果,压缩模块用于:
32、基于一个补位扩展字向量,更新一组扩展字向量;
33、基于更新后的多个扩展字向量,迭代获得补位扩展字向量数量满足设定阈值的多个新的补位扩展字向量;
34、基于初始压缩结果和多个新的补位扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果。
35、可选的,基于一个补位扩展字向量,更新一组扩展字向量时,压缩模块用于:
36、基于一组扩展字向量,构建向量队列;
37、将向量队列中的队首元素移出队列,并将一个补位扩展字向量添加至队尾,获得更新后的一组扩展字向量。
38、第三方面,本申请实施例提供一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法。
39、第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一所述方法的步骤。
40、第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品在被计算机调用时,使得所述计算机执行如第一方面所述的方法。
41、本申请实施例中,对满足设定长度要求的目标消息进行分组,获得多个比特分组后,针对多个比特分组,依次进行迭代压缩,其中,在任意一次迭代压缩中,一个比特分组被划分为多个消息扩展字,基于这多个消息扩展字,采用预设的压缩函数,对目标参量进行压缩。当所有的分组都压缩完毕后,获得最终的压缩结果作为目标消息的杂凑结果,并发往目标接收方。
42、采用这种方式,在任意一次迭代压缩过程中,通过划分一个比特分组获得多个消息扩展字,并直接基于这多个消息扩展字采用预设的压缩函数完成迭代,可以实现消息扩展的并行性,同时,压缩函数的设计能够避免传统的sm3算法中繁琐的64轮迭代运算,极大地减少内存占用量,提升了sm3算法的运行效率。
1.一种消息扩展与压缩方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述基于所述m个消息扩展字和所述目标参量,采用预设的压缩函数,获得当前的压缩结果,包括:
3.如权利要求2所述的方法,其特征在于,所述基于所述一组扩展字向量和所述目标参量,采用预设的第一压缩函数,获得初始压缩结果,包括:
4.如权利要求3所述的方法,其特征在于,所述基于所述一个补位扩展字向量,以及所述一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果,包括:
5.如权利要求3或4所述的方法,其特征在于,所述基于所述初始压缩结果和所述一组扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果,包括:
6.如权利要求5所述的方法,其特征在于,所述基于所述一个补位扩展字向量,更新所述一组扩展字向量,包括:
7.一种消息扩展与压缩装置,其特征在于,包括:
8.一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-6中任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6中任一所述方法的步骤。
10.一种计算机程序产品,其特征在于,所述计算机程序产品在被计算机调用时,使得所述计算机执行如权利要求1-6任一项所述的方法。