CN116318660B - 一种消息扩展与压缩方法及相关装置 - Google Patents

一种消息扩展与压缩方法及相关装置 Download PDF

Info

Publication number
CN116318660B
CN116318660B CN202310077809.3A CN202310077809A CN116318660B CN 116318660 B CN116318660 B CN 116318660B CN 202310077809 A CN202310077809 A CN 202310077809A CN 116318660 B CN116318660 B CN 116318660B
Authority
CN
China
Prior art keywords
compression
vector
message
word vectors
target
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.)
Active
Application number
CN202310077809.3A
Other languages
English (en)
Other versions
CN116318660A (zh
Inventor
罗影
张红杰
傅勇
胡伯良
安晓江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Haitai Fangyuan Technology Co ltd
Original Assignee
Chengdu Haitai Fangyuan Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Haitai Fangyuan Technology Co ltd filed Critical Chengdu Haitai Fangyuan Technology Co ltd
Priority to CN202310077809.3A priority Critical patent/CN116318660B/zh
Publication of CN116318660A publication Critical patent/CN116318660A/zh
Application granted granted Critical
Publication of CN116318660B publication Critical patent/CN116318660B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请公开了一种消息扩展与压缩方法及相关装置,涉及信息安全领域。本申请中,对满足设定长度要求的目标消息进行分组,获得多个比特分组后,针对多个比特分组,依次进行迭代压缩,其中,在任意一次迭代压缩中,一个比特分组被划分为多个消息扩展字,基于这多个消息扩展字,采用预设的压缩函数,对目标参量进行压缩。当所有的分组都压缩完毕后,获得最终的压缩结果作为目标消息的杂凑结果,并发往目标接收方。采用这种方式,直接基于多个消息扩展字采用预设的压缩函数完成迭代,可以实现消息扩展的并行性,同时,压缩函数的设计能够避免传统的SM3算法中繁琐的64轮迭代运算,极大地减少内存占用量,提升了SM3算法的运行效率。

Description

一种消息扩展与压缩方法及相关装置
技术领域
本申请涉及信息安全领域,尤其涉及一种消息扩展与压缩方法及相关装置。
背景技术
随着信息化和计算机技术的发展,人们在享受信息化带来的众多好处的同时,网络安全问题已成为信息时代人类共同面临的挑战,为解决这些安全问题,各种安全机制、策略和工具被研究和应用。
杂凑算法是密码学中最基本的算法之一,可广泛应用于密码协议、数字签名、消息鉴别等场景中。我国的SM3密码杂凑算法就是一种典型的杂凑算法,它能基于长度为L(L<264)的报文消息,生成长度为256比特的杂凑值,具有较高的安全性,目前已被广泛运用在网上银行、电信运营商、电子商务、企业等众多应用领域。
SM3算法的执行过程可以概括成四个步骤:消息填充、消息扩展、迭代压缩、输出结果。其中,消息扩展是将经过消息填充后的数据,扩展为132个消息扩展字,然后基于132个消息扩展字进行迭代压缩,获得最终的杂凑值,而现有的SM3算法在消息扩展过程中,采取的是一轮一轮逐次迭代的方案,会消耗大量的计算资源,拖慢运行速度。
有鉴于此,需要针对上述问题提出一种改进的消息扩展与压缩方法。
发明内容
本申请提供了一种消息扩展与压缩方法及相关装置,用以提高SM3算法的运行效率。
第一方面,本申请实施例提供了一种消息扩展与压缩方法,所述方法包括:
获取待杂凑的目标消息,并对目标消息进行比特填充,使目标消息包含的比特数为第一设定数值的整数倍;
按照第一设定数值,将目标消息划分为多个比特分组;
针对多个比特分组,依次进行迭代压缩,其中,在任意一次迭代压缩中,执行以下操作:
按照第二设定数值,将一个比特分组划分为m个消息扩展字,其中,
第一设定数值是第二设定数值的整数倍;
将上一次迭代获得的压缩结果作为目标参量,并基于m个消息扩展字和目标参量,采用预设的压缩函数,获得当前的压缩结果;
将最后一次迭代获得的压缩结果作为目标消息的杂凑结果,并将杂凑结果和目标消息发往目标接收方。
第二方面,本申请实施例还提供了一种消息扩展与压缩装置,所述装置包括:
获取模块,用于获取待杂凑的目标消息,并对目标消息进行比特填充,使目标消息包含的比特数为第一设定数值的整数倍;
分组模块,用于按照第一设定数值,将目标消息划分为多个比特分组;
压缩模块,用于针对多个比特分组,依次进行迭代压缩,其中,在任意一次迭代压缩中,执行以下操作:
按照第二设定数值,将一个比特分组划分为m个消息扩展字,其中,
第一设定数值是第二设定数值的整数倍;
将上一次迭代获得的压缩结果作为目标参量,并基于m个消息扩展字和目标参量,采用预设的压缩函数,获得当前的压缩结果;
发送模块,用于将最后一次迭代获得的压缩结果作为目标消息的杂凑结果,并将杂凑结果和目标消息发往目标接收方。
可选的,基于m个消息扩展字和目标参量,采用预设的压缩函数,获得当前的压缩结果时,压缩模块用于:
将m个消息扩展字,作为向量分量,构建一组扩展字向量,其中,每一个扩展字向量包含相同数量的向量分量;
基于一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果;
基于初始压缩结果,采用预设的第二压缩函数,获得当前的压缩结果。
可选的,基于一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果时,压缩模块用于:
重组一组扩展字向量中的各个向量分量,获得一组临时向量;
针对一组临时向量执行预设的循环移位和融合操作,获得一个补位扩展字向量;
基于一个补位扩展字向量,以及一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果。
可选的,基于一个补位扩展字向量,以及一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果时,压缩模块用于:
基于一个补位扩展字向量和一组扩展字向量共同组成的向量池,依次对目标参量进行迭代更新,在一次更新过程中,执行以下操作:
从向量池中选取固定数量的扩展字向量,作为向量参量;
基于向量参量更新目标参量,获得中间目标参量;
基于中间目标参量和多个预设常量,获得初始压缩结果。
可选的,基于初始压缩结果和一组扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果,压缩模块用于:
基于一个补位扩展字向量,更新一组扩展字向量;
基于更新后的多个扩展字向量,迭代获得补位扩展字向量数量满足设定阈值的多个新的补位扩展字向量;
基于初始压缩结果和多个新的补位扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果。
可选的,基于一个补位扩展字向量,更新一组扩展字向量时,压缩模块用于:
基于一组扩展字向量,构建向量队列;
将向量队列中的队首元素移出队列,并将一个补位扩展字向量添加至队尾,获得更新后的一组扩展字向量。
第三方面,本申请实施例提供一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一所述方法的步骤。
第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品在被计算机调用时,使得所述计算机执行如第一方面所述的方法。
本申请实施例中,对满足设定长度要求的目标消息进行分组,获得多个比特分组后,针对多个比特分组,依次进行迭代压缩,其中,在任意一次迭代压缩中,一个比特分组被划分为多个消息扩展字,基于这多个消息扩展字,采用预设的压缩函数,对目标参量进行压缩。当所有的分组都压缩完毕后,获得最终的压缩结果作为目标消息的杂凑结果,并发往目标接收方。
采用这种方式,在任意一次迭代压缩过程中,通过划分一个比特分组获得多个消息扩展字,并直接基于这多个消息扩展字采用预设的压缩函数完成迭代,可以实现消息扩展的并行性,同时,压缩函数的设计能够避免传统的SM3算法中繁琐的64轮迭代运算,极大地减少内存占用量,提升了SM3算法的运行效率。
附图说明
图1为本申请实施例中系统架构示意图;
图2为本申请实施例中系统架构下消息扩展与压缩的详细流程图;
图3为本申请实施例中的消息填充示意图;
图4为本申请实施例中的消息分组示意图;
图5为本申请实施例中系统架构下SM3算法在一次迭代压缩过程中所执行步骤的详细流程图;
图6为本申请实施例中系统架构下SM3算法在一次迭代压缩过程中所执行步骤的详细流程子图;
图7为本申请实施例中系统架构下SM3算法获得初始压缩结果的详细流程图;
图8为本申请实施例中提供的一种循环左移示意图;
图9为本申请实施例中系统架构下SM3算法获得初始压缩结果的详细流程子图;
图10为本申请实施例中系统架构下SM3算法获得初始压缩结果的逻辑示意图;
图11为本申请实施例中系统架构下SM3算法获得当前的压缩结果的详细流程图;
图12为本申请实施例中系统架构下SM3算法获得当前的压缩结果的逻辑示意图;
图13为本申请实施例中系统架构下SM3算法数次迭代后获得输出结果的逻辑示意图;
图14为本申请实施例中一种消息扩展与压缩装置的结构示意图;
图15为本申请实施例中一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够在除了这里图示或描述的那些以外的顺序实施。
以下对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)字:在计算机中,一串数码作为一个整体来处理或运算的,称为一个计算机字,简称字,字通常分为若干个字节(每个字节一般是8位),本申请实施例中,一个字长等于32位,即一个字包含4个字节。
(2)循环移位:循环移位就是把数值变成二进制,然后循环移动的过程,包括循环左移(<<<)和循环右移(>>>),循环右移是将移出的低位放到该数的高位,循环左移是把移出的高位放到该数的低位,且都是对整数进行的操作。
(3)模运算:“模”是“mod”的音译,其含义为求余,即获取一个整数除以另一个整数时作为余数出现的整数。
(4)异或运算:异或的数学符号为“⊕”,运算法则相当于不带进位的二进制加法,如果a、b两个比特不相同,则异或结果为1,如果a、b两个比特相同,则异或结果为0。
(5)非运算:数学符号为“”,参与运算的操作数只有一个,其运算结果是“1”变成“0”,“0”变成“1”。
(6)与运算:数学符号为“∧”,参与运算的操作数有两个,其运算法则为遇“0”得“0”。
(7)或运算:数学符号为“∨”,参与运算的操作数有两个,其运算法则为遇“1”得“1”。
下面对本申请实施例的设计思想进行简要介绍:
SM3密码杂凑算法是一种基于分组迭代结构的杂凑算法,是我国采用的一种密码杂凑函数标准,针对长度为L(L<264)的报文消息,SM3算法经过填充、迭代压缩,生成长度为256比特的杂凑值,整个算法的执行过程可以概括成四个步骤:消息填充、消息扩展、迭代压缩、输出结果。
其中,SM3算法的消息扩展步骤是以512比特的数据分组作为输入的,因此,需要在一开始就把数据长度填充至512比特的倍数,然后按照512比特将消息划分为n个数据分组。
进一步地,SM3的迭代压缩步骤没有直接使用数据分组进行运算,而是对一个512比特的数据分组划分为16个消息扩展字,再用这16个消息扩展字递推生成剩余的116个消息扩展字,一共生成132个消息扩展字(一个消息扩展字的长度为32位/4个字节)。
具体扩展方式如下:
a)将数据分组B(i)划分为16个消息扩展字W0,W1,...,W15
b)FOR j=16TO 67
Wj←P1(Wj-16⊕Wj-9⊕(Wj-3<<<15))⊕(Wj-13<<<7)⊕Wj-6
END FOR
c)FOR j=0TO 63
Wj’=Wj⊕Wj+4
END FOR
在对数据分组B(i)进行的一次压缩过程中,包含基于Wj,0≤j≤67和Wj’,0≤j≤63这132个消息扩展字进行的64轮迭代,当所有数据分组迭代压缩完成后,即可获得SM3算法的输出y=ABCDEFGH←V(n),其中,ABCDEFGH为8个32位的字。
具体迭代压缩方式如下:
ABCDEFGH←V(i)
FOR j=0TO 63
SS1←((A<<<12)+E+(Tj<<<j))<<<7
SS2←SS1⊕(A<<<12)
TT1←FFj(A,B,C)+D+SS2+Wj
TT2←GGj(E,F,G)+H+SS1+Wj
D←C
C←B<<<9
B←A
A←TT1
H←G
G←F<<<19
F←E
E←P0(TT2)
END FOR
V(i+1)←ABCDEFGH⊕V(i)
上述计算过程中,V(0)为固定初始值,经过迭代压缩后生成杂凑值V(n),SS1,SS2,TT1,TT2为中间变量,Tj为常数变量。
显然,现有的SM3算法在计算132个消息扩展字时,采用的是一轮一轮逐次迭代的方式,并未考虑消息扩展过程中前后几轮之间的独立性和同步计算的可行性,导致产生巨大的运算量,同时,迭代压缩对应的压缩函数Vi+1=CF(V(i),B(i)),0≤i≤n-1,完成一次压缩需要进行64轮迭代,极大地占用了存储空间,降低了SM3算法的运行效率。
有鉴于此,本申请实施例中,提出了一种针对SM3算法的消息扩展与压缩方法,采用4轮并行扩展的方式计算消息扩展字,并借助全新的压缩函数完成迭代压缩,减少SM3算法的运算量,进而提升其运行效率。
值得注意的是,本申请实施例所提供的消息扩展与压缩方法,经过适应性调整后,也可用于改进SHA-256、SHA-1,SHA-2等其他类似的杂凑算法,能够显著提升此类杂凑算法的运行效率。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请实施例及实施例中的特征可以相互组合。
参阅图1所示,本申请实施例中,包含有填充模块101、分组模块102、压缩模块103三个主要部分,其中,压缩模块103中还包含消息扩展模块1031和数据压缩模块1032,需要杂凑的消息数据转换为二进制经过填充模块101进行消息填充,填充后的消息比特长度为512的整数倍,再经过分组模块102按照512比特进行分组,获得n个512比特的消息块,最后由压缩模块103依次对每个512比特的消息块进行迭代压缩。
压缩模块103对其中一个消息块进行压缩时,首先使用消息扩展模块1031生成了共68个消息扩展字,再基于数据压缩模块1032依次完成对68个消息扩展字的压缩,最后将本轮压缩结果作为对下一个消息块进行压缩时的输入,当所有的消息块压缩完毕后,输出最后的压缩结果,作为消息数据的杂凑结果。
基于上述系统架构,参阅图2所示,本申请实施例中,使用改进的SM3算法获得目标消息的杂凑结果的详细流程如下:
步骤201:获取待杂凑的目标消息,并对目标消息进行比特填充,使目标消息包含的比特数为第一设定数值的整数倍。
例如,SM3算法入口对待杂凑的目标消息执行后续步骤之前,会对其进行比特填充,使目标消息包含的比特数为512的整数倍(本申请实施例中,第一设定数值即为512)。
假设消息M的比特长度为L,SM3算法的填充模块对消息M进行消息填充的具体方式如下:
参阅图3所示,消息M为01100110 11000100 01100011,其比特长度为L=24,首先将比特“1”添加到消息的末尾,然后继续在末尾添加k个“0”,其中,k是满足(L+1+k)mod 512=448的最小正整数,此处k=423,最后再将消息M的比特长度L的64位二进制添加至最末,填充后的消息M’的比特长度为512。
在另一种可选的实施例中,待杂凑的目标消息在进行比特填充之前,其包含的比特数可能为第一设定数值的整数倍,但仍需按照上述方法完成比特填充,再继续执行后续步骤。
步骤202:按照第一设定数值,将目标消息划分为多个比特分组。
进一步地,获得比特长度为512的整数倍的目标消息后,SM3算法的分组模块会按照512比特对目标消息进行分组,获得n个比特分组。
例如,参阅图4所示,假设经过消息填充后的消息X的比特长度为512*n,则分组模块对其进行分组后,获得B(0)、B(1)、....、B(n-1)共n个比特分组。
步骤203:针对多个比特分组,依次进行迭代压缩。
其中,参阅图5所示,SM3算法的压缩模块在针对任意一个比特分组B(i)进行迭代压缩的过程中,执行以下操作:
步骤501:按照第二设定数值,将一个比特分组划分为m个消息扩展字。
其中,第一设定数值是第二设定数值的整数倍。
例如,按照32比特对一个512比特的比特分组进行划分,获得16个消息扩展字,即w0||w1||...||w15=B(i)(本申请实施例中,第二设定数值即为32,m=16)。
步骤502:将上一次迭代获得的压缩结果作为目标参量,并基于m个消息扩展字和目标参量,采用预设的压缩函数,获得当前的压缩结果。
在另一种可选的实施例中,SM3算法的压缩模块在针对比特分组B(0)进行第一次迭代压缩时,目标参量V(0)的值为预设的固定初始值“7380166F4914B2B9 172442D7 DA8A0600A96F30BC 163138AA E38DEE4D B0FB0E4E”。
具体地,参阅图6所示,本申请实施例中,执行步骤502时,包括以下步骤:
步骤5021:将m个消息扩展字,作为向量分量,构建一组扩展字向量。
其中,每一个扩展字向量包含相同数量的向量分量。
例如,每四个消息扩展字作为一个扩展字向量的向量分量,则16个消息扩展字依次构建4个为一组的扩展字向量,包括R0=(w0,w1,w2,w3)、R1=(w4,w5,w6,w7)、R2=(w8,w9,w10,w11)、R3=(w12,w13,w14,w15),对于向量Y=(y0,y1,y2,y3),用记号Y(i)表示向量Y的第i个分量,例如Y(0)=y0,Y(1)=y1
步骤5022:基于一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果。
进一步地,参阅图7所示,本申请实施例中,步骤5022具体还包括以下步骤:
步骤701:重组一组扩展字向量中的各个向量分量,获得一组临时向量。
例如,通过4个扩展字向量R0、R1、R2、R3,计算4个临时向量S0、S1、S2、S3,其中S0=(R0 (3),R1 (0),R1 (1),R1 (2)),S1=(R1 (3),R2 (0),R2 (1),R2 (2)),S2=(R2 (2),R2 (3),R3 (0),R3 (1)),S3=(R3 (1),R3 (2),R3 (3),0)。
步骤702:针对一组临时向量执行预设的循环移位和融合操作,获得一个补位扩展字向量。
例如,先计算S1=S1<<<7,S4=S4<<<15,其中,对扩展字向量的“<<<”操作表示对扩展字向量的各向量分量执行相同的循环左移,例如对于向量Y=(y0,y1,y2,y3),Y<<<1=(y0<<<1,y1<<<1,y2<<<1,y3<<<1),参阅图8所示,对一个32位的字执行n位循环左移操作时,移出的高位会被放到该数的低位。
进一步地,计算S1=P1(R0⊕S2⊕S4)⊕S1⊕S3,再对扩展字向量S1的首个向量分量S1 (0)执行P1运算,用于修正S1的最后一个向量分量,获得一个补位扩展字向量R4,即R4=S1⊕(0,0,0,P1(S1 (0))),其中,P1为置换函数,其表达式为P1(x)=x⊕(x<<<15)⊕(x<<<23)。
补位扩展字向量R4=(R4 (0),R4 (1),R4 (2),R4 (3)),其包含的4个向量分量对应4个消息扩展字。
基于步骤701和步骤702所述,将4个消息扩展字组成一个扩展字向量,并基于4个扩展字向量生成一个包含4个消息扩展字的补位扩展字向量,利用了单指令多数据的扩展方式,实现了消息扩展字的4轮并行扩展,相比于传统的SM3算法中,一轮一轮的逐次生成132个消息扩展字的扩展方式而言,极大地提升了消息扩展的执行效率。
步骤703:基于一个补位扩展字向量,以及一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果。
具体的,本申请实施例中,基于一个补位扩展字向量和一组扩展字向量共同组成的向量池,依次对目标参量进行迭代更新,获得初始压缩结果。
参阅图9所示,在一次更新过程中,执行以下操作:
步骤901:从向量池中选取固定数量的扩展字向量,作为向量参量。
例如,向量池中包含的各扩展字向量从R0~R4按序排列,每次从中选取两个扩展字向量作为向量参量。
具体的,第一次更新时选取扩展字向量R0和R1,第二次更新时选取扩展字向量R1和R2,第三次更新时选取扩展字向量R2和R3,第四次更新时选取扩展字向量R3和R4,至此完成迭代更新。
步骤902:基于向量参量更新目标参量,获得中间目标参量。
例如,假设此时目标参量V(i)=ABCDEFGH,向量参量为扩展字向量R0和R1,则利用V(i)初始化移位变量Z0和Z1,Z0=(D,C,B<<<9,A<<<9),Z1=(H,G,F<<<19,E<<<19),并记BS=B<<<9,AS=A<<<9,FS=F<<<19,ES=E<<<19,再利用移位变量更新A至H,获得中间目标参量A*至H*,具体为:(D*,C*,B*,A*)=Z0+R0+R1,(H*,G*,F*,E*)=Z1+R0
步骤903:基于中间目标参量和多个预设常量,获得初始压缩结果。
具体的,以第一轮更新为例,使用目标参量A至H,中间目标参量A*至H*,以及预设常量T0、T1、T2、T3,执行以下步骤完成一次迭代更新。
①更新输出变量(D*,H*)=QA(A,B,C,D*,E,F,G,H*,T0)。
②更新输出变量(C*,G*)=QA(D*,A,BS,C*,H*,E,FS,G*,T1)。
③更新输出变量(B*,F*)=QA(C*,D*,AS,B*,G*,H*,ES,F*,T2)。
④再次更新输出变量D*和H*,D*=D*<<<9,H*=H*<<<19。
⑤更新输出变量(A*,E*)=QA(B*,C*,D*,A*,F*,G*,H*,E*,T3)。
⑥再次更新输出变量C*和G*,C*=C*<<<9,G*=G*<<<19。
⑦输出变量A*,B*,C*,D*,E*,F*,G*,H*。
上述步骤902和步骤903为本申请实施例中第一压缩函数,即CMA函数的执行过程,其表达式为:
(A*,B*,C*,D*,E*,F*,G*,H*)=CMA(A,B,C,D,E,F,G,H,Ri,Ri+1,Tj+0,Tj+1,Tj+2,Tj+3)
其中i=0,1,2,3,4,j=4i,且当j=0,1,...,15时,预设常量Tj=0x79CC4519<<<j,当j=16,...,63时,Tj=0x7A879D8A<<<j。
参阅图10所示,当基于扩展字向量R0~R4,使用CMA函数对目标参量V(i)完成4轮迭代更新后,即可获得初始压缩结果。
步骤5023:基于初始压缩结果,采用预设的第二压缩函数,获得当前的压缩结果。
具体的,参阅图11所示,本申请实施例中,步骤5023还包括以下步骤:
步骤1101:基于一个补位扩展字向量,更新一组扩展字向量。
具体操作为:基于一组扩展字向量,构建向量队列,将向量队列中的队首元素移出队列,并将一个补位扩展字向量添加至队尾,获得更新后的一组扩展字向量。
例如,基于补位扩展字向量R4,更新由R0,R1,R2,R3组建的一组扩展字向量时,将R0移出向量队列,并将R4添加至队尾,获得更新后的一组扩展字向量R1,R2,R3,R4
步骤1102:基于更新后的多个扩展字向量,迭代获得补位扩展字向量数量满足设定阈值的多个新的补位扩展字向量。
例如,基于一组扩展字向量R1,R2,R3,R4,采用如前文步骤701和步骤702所述的方法,获得一个新的补位扩展字向量R5,再将一组扩展字向量更新为R2,R3,R4,R5,并获得又一个新的补位扩展字向量R6,如此迭代,直到获得R5至R16共12个新的补位扩展字向量。
同理,每一个补位扩展字向量均包含4个向量分量,对应4个消息扩展字。
步骤1103:基于初始压缩结果和多个新的补位扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果。
例如,参阅图12所示,在R5至R16组成的向量池中,每次按序从中选取两个扩展字向量作为向量参量,用于对初始压缩结果进行迭代更新,每次更新过程中,使用CMB函数获得一次更新结果,当基于扩展字向量R5~R16,使用CMA函数对初始压缩结果完成12轮迭代更新后,即可获得当前的压缩结果V(i+1),其中CMB函数即本申请实施例中的第二压缩函数。
具体的,CMB函数与CMA函数的表达式相同,二者的区别是:CMA函数中步骤903出现的QA函数,在CMB函数中被替换为QB函数。
QA函数的表达式为:
(P,Q)=QA(Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Z)
其输入为8个变量Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,和一个常量Z,输出为两个变量P、Q,其计算过程描述如下:
①计算输出变量Q=((Y1<<<12)+Y5+Z)<<<7。
②计算输出变量P=Q⊕(Y1<<<12)。
③更新输出变量P=FA(Y1,Y2,Y3)+P+Y4
④更新输出变量Q=FA(Y4,Y5,Y6)+Q+Y8,使用置换函数P0再次更新输出变量Q=P0(Q)。
⑤输出两个变量P和Q。
其中,布尔函数FA(x,y,z)=(x⊕y⊕z),置换函数P0(x)=x⊕(x<<<9)⊕(x<<<17)。
进一步地,QB函数与QA函数的表达式相同,其计算过程描述如下:
①计算输出变量Q=((Y1<<<12)+Y5+Z)<<<7。
②计算输出变量P=Q⊕(Y1<<<12)。
③更新输出变量P=FB(Y1,Y2,Y3)+P+Y4
④更新输出变量Q=GB(Y4,Y5,Y6)+Q+Y8,使用置换函数P0再次更新输出变量Q=P0(Q)。
⑤输出两个变量P和Q。
其中布尔函数FB(x,y,z)=(x∧y)∨(y∧z)∨(z∧x),布尔函数GB(x,y,z)=(x∧y)∨(x∧z)。
基于步骤1103所述,获得当前的压缩结果V(i+1)之后,即完成针对比特分组B(i)的一次迭代压缩,在针对比特分组B(i+1)进行的一次迭代压缩中,V(i+1)即作为输入的目标参量。
参阅图13所示,从初始值V(0)与B(0)组开始,采用前文所述方法依次完成对所有比特分组的迭代压缩,直到输出最后一次迭代获得的压缩结果V(n-1),即为消息X对应的杂凑值。
综上所述,本申请实施例中设计CMA函数和CMB函数,用于替换传统的CF压缩函数,避免了繁琐的64轮迭代运算,减少了中间一些不必要的计算和冗余的中间变量,从而提高了SM3算法的运行效率,此外,采用本申请实施例所提供的消息扩展与压缩方法,只需计算68个消息扩展字,并且4个扩展字向量为一组,只需占用4个寄存器用于保存当前的一组扩展字向量,减少了寄存器的使用量,同时在消息扩展和压缩的整个过程中,消息都只存储在寄存器而不会存储到内存中,避免了数据处理过程中消息存储至内存,导致敏感安全参数泄露的问题。
步骤204:将最后一次迭代获得的压缩结果作为目标消息的杂凑结果,并将杂凑结果和目标消息发往目标接收方。
在一些可选的实施例中,SM3算法可用于数字签名,消息发送方首先用SM3算法生成待发送消息(如PDF文档等)的消息摘要,即SM3算法输出的杂凑值,消息发送方使用其私有密钥对消息摘要进行加密,产生数字签名,随待发送消息一起发出,接收方采用同样的方式计算消息摘要,再用发送方的公有密钥对数字签名进行解密,如果这两个消息摘要相同,那么接收方就能确认该消息是来自发送方的,从而保证消息发送方的身份准确性。
进一步地,本申请实施例所提供的针对SM3算法的消息扩展与压缩方法,可总结为基于单指令多数据的SM3算法,对应表达式为Y=SM3Hash(X),其输入为比特长度为L的目标消息X,输出为杂凑值Y。
传统SM3算法和本申请提出的基于单指令多数据的SM3算法,进行消息扩展时的运算量对比如下:
传统SM3算法需执行读取&存储84次,异或312次,循环移位208次,基于单指令多数据的SM3算法需要读取&存储21次、异或117次、循环移位78次、向量拼接65次。
由此可见,基于单指令多数据的SM3算法的运算量是传统SM3算法运算量的1/4至1/3,仅仅在计算扩展字向量的向量拼接时运算量有所增加,但总运算量仍小于传统实现方式,并且使用Intel 11th i5处理器进行实验测试时,执行传统SM3算法的处理性能为1802.7mbps,执行基于单指令多数据的SM3算法的运算性能提升至2541.8mbps,整体性能提升约41.1%。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
基于相同技术构思,参阅图14所示,本申请实施例还提供了一种消息扩展与压缩装置,该装置包括:
获取模块1401,用于获取待杂凑的目标消息,并对目标消息进行比特填充,使目标消息包含的比特数为第一设定数值的整数倍;
分组模块1402,用于按照第一设定数值,将目标消息划分为多个比特分组;
压缩模块1403,用于针对多个比特分组,依次进行迭代压缩,其中,在任意一次迭代压缩中,执行以下操作:
按照第二设定数值,将一个比特分组划分为m个消息扩展字,其中,
第一设定数值是第二设定数值的整数倍;
将上一次迭代获得的压缩结果作为目标参量,并基于m个消息扩展字和目标参量,采用预设的压缩函数,获得当前的压缩结果;
发送模块1404,用于将最后一次迭代获得的压缩结果作为目标消息的杂凑结果,并将杂凑结果和目标消息发往目标接收方。
可选的,基于m个消息扩展字和目标参量,采用预设的压缩函数,获得当前的压缩结果时,压缩模块1403用于:
将m个消息扩展字,作为向量分量,构建一组扩展字向量,其中,每一个扩展字向量包含相同数量的向量分量;
基于一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果;
基于初始压缩结果,采用预设的第二压缩函数,获得当前的压缩结果。
可选的,基于一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果时,压缩模块1403用于:
重组一组扩展字向量中的各个向量分量,获得一组临时向量;
针对一组临时向量执行预设的循环移位和融合操作,获得一个补位扩展字向量;
基于一个补位扩展字向量,以及一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果。
可选的,基于一个补位扩展字向量,以及一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果时,压缩模块1403用于:
基于一个补位扩展字向量和一组扩展字向量共同组成的向量池,依次对目标参量进行迭代更新,在一次更新过程中,执行以下操作:
从向量池中选取固定数量的扩展字向量,作为向量参量;
基于向量参量更新目标参量,获得中间目标参量;
基于中间目标参量和多个预设常量,获得初始压缩结果。
可选的,基于初始压缩结果和一组扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果,压缩模块1403用于:
基于一个补位扩展字向量,更新一组扩展字向量;
基于更新后的多个扩展字向量,迭代获得补位扩展字向量数量满足设定阈值的多个新的补位扩展字向量;
基于初始压缩结果和多个新的补位扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果。
可选的,基于一个补位扩展字向量,更新一组扩展字向量时,压缩模块1403用于:
基于一组扩展字向量,构建向量队列;
将向量队列中的队首元素移出队列,并将一个补位扩展字向量添加至队尾,获得更新后的一组扩展字向量。
基于相同的技术构思,本申请实施例还提供了一种电子设备,该电子设备可实现本申请上述实施例提供的消息扩展与压缩的方法流程。
在一种实施例中,该电子设备可以是服务器,也可以是终端设备或其他电子设备。
参阅图15所示,该电子设备可包括:
至少一个处理器1501,以及与至少一个处理器1501连接的存储器1502,本申请实施例中不限定处理器1501与存储器1502之间的具体连接介质,图15中是以处理器1501和存储器1502之间通过总线1500连接为例。总线1500在图15中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1500可以分为地址总线、数据总线、控制总线等,为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器1501也可以称为控制器,对于名称不做限制。
在本申请实施例中,存储器1502存储有可被至少一个处理器1501执行的指令,至少一个处理器1501通过执行存储器1502存储的指令,可以执行前文论述的一种消息扩展与压缩方法。处理器1501可以实现图13所示的装置中各个模块的功能。
其中,处理器1501是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器1502内的指令以及调用存储在存储器1502内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。
在一种可能的设计中,处理器1501可包括一个或多个处理单元,处理器1501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1501中。在一些实施例中,处理器1501和存储器1502可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器1501可以是通用处理器,例如CPU、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的一种消息扩展与压缩方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器1502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1502可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器1502是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器1502还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器1501进行设计编程,可以将前述实施例中介绍的一种消息扩展与压缩方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图2所示的实施例的一种消息扩展与压缩方法的步骤。如何对处理器1501进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行前文论述的一种消息扩展与压缩方法。
在一些可能的实施方式中,本申请提供一种消息扩展与压缩方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在装置上运行时,程序代码用于使该控制设备执行本说明书上述描述的根据本申请各种示例性实施方式的一种消息扩展与压缩方法中的步骤。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种消息扩展与压缩方法,其特征在于,包括:
获取待杂凑的目标消息,并对所述目标消息进行比特填充,使所述目标消息包含的比特数为第一设定数值的整数倍;
按照所述第一设定数值,将所述目标消息划分为多个比特分组;
针对所述多个比特分组,依次进行迭代压缩,其中,在任意一次迭代压缩中,执行以下操作:
按照第二设定数值,将一个比特分组划分为m个消息扩展字,其中,所述第一设定数值是所述第二设定数值的整数倍;
将上一次迭代获得的压缩结果作为目标参量,并将所述m个消息扩展字,作为向量分量,构建一组扩展字向量;
重组所述一组扩展字向量中的各个向量分量,获得一组临时向量;
针对所述一组临时向量执行预设的循环移位和融合操作,获得一个补位扩展字向量;
基于所述一个补位扩展字向量,以及所述一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果;
基于所述初始压缩结果,采用预设的第二压缩函数,获得当前的压缩结果;
将最后一次迭代获得的压缩结果作为所述目标消息的杂凑结果,并将所述杂凑结果和所述目标消息发往目标接收方。
2.如权利要求1所述的方法,其特征在于,所述基于所述一个补位扩展字向量,以及所述一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果,包括:
基于所述一个补位扩展字向量和所述一组扩展字向量共同组成的向量池,依次对所述目标参量进行迭代更新,在一次更新过程中,执行以下操作:
从所述向量池中选取固定数量的扩展字向量,作为向量参量;
基于所述向量参量更新所述目标参量,获得中间目标参量;
基于所述中间目标参量和多个预设常量,获得所述初始压缩结果。
3.如权利要求1或2所述的方法,其特征在于,所述基于所述初始压缩结果和所述一组扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果,包括:
基于所述一个补位扩展字向量,更新所述一组扩展字向量;
基于更新后的多个扩展字向量,迭代获得补位扩展字向量数量满足设定阈值的多个新的补位扩展字向量;
基于所述初始压缩结果和所述多个新的补位扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果。
4.如权利要求3所述的方法,其特征在于,所述基于所述一个补位扩展字向量,更新所述一组扩展字向量,包括:
基于所述一组扩展字向量,构建向量队列;
将所述向量队列中的队首元素移出队列,并将所述一个补位扩展字向量添加至队尾,获得更新后的一组扩展字向量。
5.一种消息扩展与压缩装置,其特征在于,包括:
获取模块,用于获取待杂凑的目标消息,并对所述目标消息进行比特填充,使所述目标消息包含的比特数为第一设定数值的整数倍;
分组模块,用于按照所述第一设定数值,将所述目标消息划分为多个比特分组;
压缩模块,用于针对所述多个比特分组,依次进行迭代压缩,其中,在任意一次迭代压缩中,执行以下操作:
按照第二设定数值,将一个比特分组划分为m个消息扩展字,其中,所述第一设定数值是所述第二设定数值的整数倍;
将上一次迭代获得的压缩结果作为目标参量,并将所述m个消息扩展字,作为向量分量,构建一组扩展字向量;
重组所述一组扩展字向量中的各个向量分量,获得一组临时向量;
针对所述一组临时向量执行预设的循环移位和融合操作,获得一个补位扩展字向量;
基于所述一个补位扩展字向量,以及所述一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果;
基于所述初始压缩结果,采用预设的第二压缩函数,获得当前的压缩结果;
发送模块,用于将最后一次迭代获得的压缩结果作为所述目标消息的杂凑结果,并将所述杂凑结果和所述目标消息发往目标接收方。
6.如权利要求5所述的装置,其特征在于,所述基于所述一个补位扩展字向量,以及所述一组扩展字向量和目标参量,采用预设的第一压缩函数,获得初始压缩结果时,所述压缩模块用于:
基于所述一个补位扩展字向量和所述一组扩展字向量共同组成的向量池,依次对所述目标参量进行迭代更新,在一次更新过程中,执行以下操作:
从所述向量池中选取固定数量的扩展字向量,作为向量参量;
基于所述向量参量更新所述目标参量,获得中间目标参量;
基于所述中间目标参量和多个预设常量,获得所述初始压缩结果。
7.如权利要求5或6所述的装置,其特征在于,所述基于所述初始压缩结果和所述一组扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果时,所述压缩模块用于:
基于所述一个补位扩展字向量,更新所述一组扩展字向量;
基于更新后的多个扩展字向量,迭代获得补位扩展字向量数量满足设定阈值的多个新的补位扩展字向量;
基于所述初始压缩结果和所述多个新的补位扩展字向量,采用预设的第二压缩函数,获得当前的压缩结果。
8.如权利要求7所述的装置,其特征在于,所述基于所述一个补位扩展字向量,更新所述一组扩展字向量时,所述压缩模块用于:
基于所述一组扩展字向量,构建向量队列;
将所述向量队列中的队首元素移出队列,并将所述一个补位扩展字向量添加至队尾,获得更新后的一组扩展字向量。
9.一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4中任一所述方法的步骤。
CN202310077809.3A 2023-01-12 2023-01-12 一种消息扩展与压缩方法及相关装置 Active CN116318660B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310077809.3A CN116318660B (zh) 2023-01-12 2023-01-12 一种消息扩展与压缩方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310077809.3A CN116318660B (zh) 2023-01-12 2023-01-12 一种消息扩展与压缩方法及相关装置

Publications (2)

Publication Number Publication Date
CN116318660A CN116318660A (zh) 2023-06-23
CN116318660B true CN116318660B (zh) 2023-12-08

Family

ID=86831403

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310077809.3A Active CN116318660B (zh) 2023-01-12 2023-01-12 一种消息扩展与压缩方法及相关装置

Country Status (1)

Country Link
CN (1) CN116318660B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116846543A (zh) * 2023-07-26 2023-10-03 百信信息技术有限公司 一种sm3密码杂凑算法的数据处理方法及相关设备
CN118573357A (zh) * 2024-07-25 2024-08-30 山东云海国创云计算装备产业创新中心有限公司 一种数据加密处理方法、设备、介质及产品

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142694A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd データフィールドのエンコード方法、情報フィールドの拡張方法、及び、コンピュータシステム
CN102761414A (zh) * 2011-04-26 2012-10-31 航天信息股份有限公司 一种sm3密码杂凑算法及确定其中的变量字的方法
CN104092534A (zh) * 2014-07-09 2014-10-08 昆腾微电子股份有限公司 实现sm3密码杂凑算法中的迭代压缩的方法
CN106603222A (zh) * 2016-09-27 2017-04-26 江冠成 一种用于实现sm3杂凑算法的系统及sm3杂凑算法实现方法
CN107579811A (zh) * 2017-07-28 2018-01-12 广州星海集成电路基地有限公司 一种基于sm3密码杂凑算法的硬件优化方法
CN114978473A (zh) * 2022-05-07 2022-08-30 海光信息技术股份有限公司 一种sm3算法的处理方法、处理器、芯片及电子设备
CN115525342A (zh) * 2022-10-19 2022-12-27 上海高性能集成电路设计中心 一种sm3密码杂凑算法的加速方法及指令集处理器

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142694A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd データフィールドのエンコード方法、情報フィールドの拡張方法、及び、コンピュータシステム
CN102761414A (zh) * 2011-04-26 2012-10-31 航天信息股份有限公司 一种sm3密码杂凑算法及确定其中的变量字的方法
CN104092534A (zh) * 2014-07-09 2014-10-08 昆腾微电子股份有限公司 实现sm3密码杂凑算法中的迭代压缩的方法
CN106603222A (zh) * 2016-09-27 2017-04-26 江冠成 一种用于实现sm3杂凑算法的系统及sm3杂凑算法实现方法
CN107579811A (zh) * 2017-07-28 2018-01-12 广州星海集成电路基地有限公司 一种基于sm3密码杂凑算法的硬件优化方法
CN114978473A (zh) * 2022-05-07 2022-08-30 海光信息技术股份有限公司 一种sm3算法的处理方法、处理器、芯片及电子设备
CN115525342A (zh) * 2022-10-19 2022-12-27 上海高性能集成电路设计中心 一种sm3密码杂凑算法的加速方法及指令集处理器

Also Published As

Publication number Publication date
CN116318660A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
CN116318660B (zh) 一种消息扩展与压缩方法及相关装置
KR102137956B1 (ko) 블록 마이닝 방법 및 장치
CN111464308B (zh) 一种实现多种哈希算法可重构的方法和系统
US6795553B1 (en) Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method
CN113300831B (zh) 一种安全散列算法的实现方法、系统、介质及设备
US20080063187A1 (en) Hash value generation device, program, and hash value generation method
US20170257212A1 (en) Cryptographic Apparatuses And Methods For Encrypting And Decrypting Data Using Automata
CN107534549B (zh) 可读存储介质、用于数据流字块加密的方法及系统
CN112152784A (zh) 用于基于散列的签名算法的并行处理技术
CN109844750A (zh) 填充操作状态确定
WO2017023195A1 (ru) Способ линейного преобразования (варианты)
CN116260572B (zh) 数据杂凑处理方法、数据验证方法及电子设备
Mihaljevic et al. A family of fast dedicated one-way hash functions based on linear cellular automata over GF (q)
Kotukh et al. Method of Security Improvement for MST3 Cryptosystem Based on Automorphism Group of Ree Function Field
CN111967026A (zh) 兑换码的加密和解密方法及装置及计算机设备
Zhang et al. Meet-in-the-middle attack with splice-and-cut technique and a general automatic framework
JP2009169316A (ja) ハッシュ関数演算装置及び署名装置及びプログラム及びハッシュ関数演算方法
KR100954843B1 (ko) 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체
CN116204910B (zh) 插件化哈希加密方法、非易失性可读存储介质及电子设备
Ali Efficient implementation of linearisation attacks on F-FCSR-16 type key-stream generators
AU2018320434B2 (en) Secure computation device, secure computation method, program, and recording medium
WO2024140141A1 (zh) 椭圆曲线中的二倍点、一般点加量子运算方法及解密方法
CN116383803B (zh) 数据处理方法、装置、计算机设备和存储介质
CN114676448A (zh) Sm3算法的实现电路、方法及电子设备
CN115174038A (zh) 基于simd的sm2加密及解密快速实现方法

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
GR01 Patent grant
GR01 Patent grant