System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于并行SM3算法的数据加密方法及系统技术方案_技高网
当前位置: 首页 > 专利查询>山东大学专利>正文

一种基于并行SM3算法的数据加密方法及系统技术方案

技术编号:41130153 阅读:3 留言:0更新日期:2024-04-30 17:59
本发明专利技术属于数据加密技术领域,提供了一种基于并行SM3算法的数据加密方法及系统,包括:获取若干组需并行计算的消息;对于每组消息,进行填充后,划分到若干小组;对于每个小组,采用若干整型数组存储后,对每个整型数组进行数据装载,得到若干数据变量;对于每个整型数组的数据变量,通过高级向量扩展指令集中的低位打包、高位打包和数据重排操作,完成矩阵转置,得到转置后数据;基于转置后数据,进行迭代压缩后,再次通过矩阵转置,得到哈希值。使SM3算法的吞吐量达到串行时的5‑6倍。

【技术实现步骤摘要】

本专利技术属于数据加密,尤其涉及一种基于并行sm3算法的数据加密方法及系统。


技术介绍

1、本部分的陈述仅仅是提供了与本专利技术相关的
技术介绍
信息,不必然构成在先技术。

2、sm3密码算法是2010年发布的哈希密码杂凑算法,适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成等。对于长度为l(l<264)比特的消息m,sm3算法经过填充和迭代压缩,生成256比特的杂凑值。

3、在申请号为cn202111074292.x,专利名称为一种基于simd的sm3并行数据加密运算方法及系统,的专利中,根据消息长度分组对sm3算法执行串行/simd(singleinstruction multiple data,单指令多数据流)并行,在sm3输入的数据使用pshufb(8路32比特重排)与vpgatherdd(8路32比特查表)指令编排,以使用256位ymm寄存器进行轮函数的计算,最后将输出哈希值与消息异或得到密文,该方法可将sm3算法效率提升至原来的3-4倍。

4、上述数据加密运算方法,使用avx2指令集将sm3算法整体做并行实现,在加密前后只需要进行一次load(装载)和store(存储)操作即可,但,load之后输入的__m256i(包含若干个整型数据的向量)数据存在依赖性,该技术使用了vpgatherdd指令和pshufb指令完成8路32bit数据查表并重排,完成数据编排,这种方法仍有较高的性能损耗。


技术实现思路

1、为了解决上述
技术介绍
中存在的技术问题,本专利技术提供一种基于并行sm3算法的数据加密方法及系统,在sm3算法获取消息时,将输入的并行消息分别进行填充并划分为若干小组,将每个小组装载入simd寄存器中后,通过avx指令集中的高级向量扩展指令集中的低位打包和高位打包等将消息编排成易于并行操作的数据格式,使sm3算法的吞吐量达到串行时的5-6倍。

2、为了实现上述目的,本专利技术采用如下技术方案:

3、本专利技术的第一个方面提供一种基于并行sm3算法的数据加密方法。

4、一种基于并行sm3算法的数据加密方法,包括:

5、获取若干组需并行计算的消息;

6、对于每组消息,进行填充后,划分到若干小组;

7、对于每个小组,采用若干整型数组存储后,对每个整型数组进行数据装载,得到若干数据变量;

8、对于每个整型数组的数据变量,通过高级向量扩展指令集中的低位打包、高位打包和数据重排操作,完成矩阵转置,得到转置后数据;

9、基于转置后数据,进行迭代压缩后,再次通过矩阵转置,得到哈希值。

10、进一步地,所述填充包括:将比特1添加到消息的末尾后,再添加若干个0后,再添加一个比特串。

11、进一步地,所述填充中添加的0的数量为k,且k为满足l+1+k≡448mod512的最小非负整数,l为消息长度。

12、进一步地,所述比特串为消息长度的二进制表示。

13、进一步地,所述迭代压缩采用8路并行计算压缩函数或采用16路并行计算压缩函数。

14、进一步地,所述迭代压缩的矩阵转置,仅对最后一个小组的转置后数据进行。

15、进一步地,所述数据装载包括:将整型数组拆分为多个整型变量后,将每个整型变量加载到一个数据变量中。

16、本专利技术的第二个方面提供一种基于并行sm3算法的数据加密系统。

17、一种基于并行sm3算法的数据加密系统,包括:

18、消息获取模块,其被配置为:获取若干组需并行计算的消息;

19、数据填充模块,其被配置为:对于每组消息,进行填充后,划分到若干小组;

20、数据装载模块,其被配置为:对于每个小组,采用若干整型数组存储后,对每个整型数组进行数据装载,得到若干数据变量;

21、矩阵转置模块,其被配置为:对于每个整型数组的数据变量,通过高级向量扩展指令集中的低位打包、高位打包和数据重排操作,完成矩阵转置,得到转置后数据;

22、迭代压缩模块,其被配置为:基于转置后数据,进行迭代压缩后,再次通过矩阵转置,得到哈希值。

23、本专利技术的第三个方面提供一种计算机可读存储介质。

24、一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一个方面所述的一种基于并行sm3算法的数据加密方法中的步骤。

25、本专利技术的第四个方面提供一种计算机设备。

26、一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一个方面所述的一种基于并行sm3算法的数据加密方法中的步骤。

27、与现有技术相比,本专利技术的有益效果是:

28、本专利技术在sm3算法获取消息时,将输入的并行消息分别进行填充并划分为若干小组,将每个小组装载入simd寄存器中后,通过avx指令集中的高级向量扩展指令集中的低位打包和高位打包等将消息编排成易于并行操作的数据格式,使sm3算法的吞吐量达到串行时的5-6倍。

本文档来自技高网...

【技术保护点】

1.一种基于并行SM3算法的数据加密方法,其特征在于,包括:

2.根据权利要求1所述的一种基于并行SM3算法的数据加密方法,其特征在于,所述填充包括:将比特1添加到消息的末尾后,再添加若干个0后,再添加一个比特串。

3.根据权利要求2所述的一种基于并行SM3算法的数据加密方法,其特征在于,所述填充中添加的0的数量为k,且k为满足l+1+k≡448mod512的最小非负整数,l为消息长度。

4.根据权利要求2述的一种基于并行SM3算法的数据加密方法,其特征在于,所述比特串为消息长度的二进制表示。

5.根据权利要求1所述的一种基于并行SM3算法的数据加密方法,其特征在于,所述迭代压缩采用8路并行计算压缩函数或采用16路并行计算压缩函数。

6.根据权利要求1所述的一种基于并行SM3算法的数据加密方法,其特征在于,所述迭代压缩的矩阵转置,仅对最后一个小组的转置后数据进行。

7.根据权利要求1所述的一种基于并行SM3算法的数据加密方法,其特征在于,所述数据装载包括:将整型数组拆分为多个整型变量后,将每个整型变量加载到一个数据变量中。

8.一种基于并行SM3算法的数据加密系统,其特征在于,包括:

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一项所述的一种基于并行SM3算法的数据加密方法中的步骤。

10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一项所述的一种基于并行SM3算法的数据加密方法中的步骤。

...

【技术特征摘要】

1.一种基于并行sm3算法的数据加密方法,其特征在于,包括:

2.根据权利要求1所述的一种基于并行sm3算法的数据加密方法,其特征在于,所述填充包括:将比特1添加到消息的末尾后,再添加若干个0后,再添加一个比特串。

3.根据权利要求2所述的一种基于并行sm3算法的数据加密方法,其特征在于,所述填充中添加的0的数量为k,且k为满足l+1+k≡448mod512的最小非负整数,l为消息长度。

4.根据权利要求2述的一种基于并行sm3算法的数据加密方法,其特征在于,所述比特串为消息长度的二进制表示。

5.根据权利要求1所述的一种基于并行sm3算法的数据加密方法,其特征在于,所述迭代压缩采用8路并行计算压缩函数或采用16路并行计算压缩函数。

6.根据权利要求1所述的一种基于并行...

【专利技术属性】
技术研发人员:郝蕴志张国艳
申请(专利权)人:山东大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1