CN117763205A - 数据处理方法、装置、电子设备及存储介质 - Google Patents
数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117763205A CN117763205A CN202410038815.2A CN202410038815A CN117763205A CN 117763205 A CN117763205 A CN 117763205A CN 202410038815 A CN202410038815 A CN 202410038815A CN 117763205 A CN117763205 A CN 117763205A
- Authority
- CN
- China
- Prior art keywords
- data
- bit
- bits
- input data
- length
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 26
- 238000013500 data storage Methods 0.000 claims abstract description 38
- 238000012545 processing Methods 0.000 claims abstract description 30
- 230000000873 masking effect Effects 0.000 claims abstract description 29
- 238000006243 chemical reaction Methods 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims description 43
- 238000004891 communication Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 18
- 239000012634 fragment Substances 0.000 claims description 13
- 238000004422 calculation algorithm Methods 0.000 description 16
- 230000000052 comparative effect Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据处理方法、装置、电子设备及存储介质。所述数据处理方法,应用于算术掩码到布尔掩码转换,所述方法包括:将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,其中,所述特定比特位宽k的设定满足对应的查找目标存储在所述查找表中时占一个预定的最小数据存储单元;根据所述多次查找的结果,确定布尔掩码后的输出数据。
Description
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
在涉及数据安全或隐私保护应用的SOC(System-On-Chip,片上系统)芯片中,通常需要用到散列算法(HASH)来实现一些诸如信息校验、签名或鉴权等应用。而在基于软件实现的散列算法中,侧信道攻击(SCA,Side Channel Attack)包括差分功耗分析(DPA,Differential Power Analysis)会对算法的安全性造成非常大的影响。因此,软件实现方案中通常需要使用到布尔掩码(Boolean Mask)格式的输入、输出来保护敏感信息资产的安全。布尔掩码是一种保护信息的数据格式,假设布尔掩码包含两个分量x与y,那么真实的信息为(x⊕y)。一般的HASH算法中,基本的操作包括移位、或、与、非、异或、加法、减法等。上述操作中,对于除加减法以外的其它操作,布尔掩码形式的数据都可以完成,但是对于加减法,通过简单的操作无法实现。有一种技术路线是将布尔掩码形式的数据转换为算术掩码(Arithmetic Mask)形式的数据:A+R=B⊕R。其中,A和R是算术掩码的两个分量,B和R是布尔掩码的两个分量,通过上述转换可以解决布尔掩码数据的加减法运算问题。由于最终结果还需要布尔掩码输出,因此经过加减法运算以后的算术掩码数据还需要转换成布尔掩码数据。
目前已知的可用于抗侧信道攻击的算术掩码到布尔掩码的转换方式,一种方式是直接通过A进行一系列基本运算转换得到B,另一种方式是通过查表的方式通过输入A查到B的值。由于在HASH运算中基本数据单位一般是字(word),1个字通常是4字节或者8个字节,对于查表的方式,使用完整的A作为输入来查找B,容易使查找表占用过大的存储空间(例如RAM(Random Access Memory,随机存取存储器)),这在嵌入式系统中可行性低。
因此,在通过查表的方式实现算术掩码到布尔掩码转换时,如何在避免查找表占用的存储空间过大的基础上,同时保证查找表对于存储空间的利用率,就成了一个需要解决的技术问题。
发明内容
有鉴于此,本申请实施例提供一种数据处理方法、装置、电子设备及存储介质,以至少部分解决上述问题。
根据本申请实施例的第一方面,提供了一种数据处理方法,应用于算术掩码到布尔掩码转换,所述方法包括:
将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,其中,所述特定比特位宽k的设定满足对应的查找目标存储在所述查找表中时占一个预定的最小数据存储单元;
根据所述多次查找的结果,确定布尔掩码后的输出数据。
在一些可选的实施例中,所述最小数据存储单元的存储空间大小为8x比特,其中,x≥1且为正整数;
所述查找目标为包含进位符的8x比特的数据,并且,所述特定比特位宽k为8x-1比特。
在一些可选的实施例中,x=1,k=7比特。
在一些可选的实施例中,所述将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,包括:
按照从所述输入数据的从低位到高位的顺序,将所述输入数据分为多个特定比特位宽k的长度的片段数据在所述查找表中进行多次查找。
在一些可选的实施例中,所述按照从所述输入数据的从低位到高位的顺序,将所述输入数据分为特定比特位宽k的长度的片段数据在所述查找表中进行多次查找,包括:
若所述输入数据的比特长度为k*n+a比特,则按照从所述输入数据的从低位到高位的顺序,至少将所述输入数据的低k*n比特数据分为n个特定比特位宽k的长度的片段数据,并根据所述n个特定比特位宽k的长度的片段数据,在所述查找表中进行n次查找,其中,n≥2且为正整数,1≤a≤k且为正整数;
若所述输入数据的比特长度为k*m比特,则按照从所述输入数据的从低位到高位的顺序,将所述输入数据分为m个特定比特位宽k的长度的片段数据,并根据所述m个特定比特位宽k的长度的片段数据,在所述查找表中进行m次查找,其中,m≥2且为正整数。
在一些可选的实施例中,所述数据处理方法还包括:若a>1,则利用所述输入数据的高a比特数据,在所述查找表中进行1次查找;
所述根据所述多次查找的结果,确定布尔掩码后的输出数据,包括:
根据所述n次查找的结果和所述1次查找的结果,确定所述布尔掩码后的输出数据。
在一些可选的实施例中,所述根据所述n次查找的结果和所述1次查找的结果,确定所述布尔掩码后的输出数据,包括:
根据所述n次查找的结果中的每次结果的低k位数据、以及所述1次查找的结果的低a位数据,按照从低位到高位的顺序进行依次拼接,以得到比特长度为k*n+a比特的拼接结果;
根据所述k*n+a比特的拼接结果,确定所述布尔掩码后的输出数据。
在一些可选的实施例中,所述数据处理方法还包括:若a=1,则利用所述输入数据的高a比特数据与第一随机数的低a位进行异或逻辑运算,其中,所述第一随机数为k比特长度的随机整数;
所述根据所述多次查找的结果,确定布尔掩码后的输出数据,包括:
根据所述n次查找的结果和所述异或逻辑运算的结果,确定所述布尔掩码后的输出数据。
在一些可选的实施例中,所述根据所述n次查找的结果和所述异或逻辑运算的结果,确定所述布尔掩码后的输出数据,包括:
根据所述n次查找的结果中的每次结果的低k位数据、以及所述异或逻辑运算的结果,按照从低位到高位的顺序进行依次拼接,以得到比特长度为k*n+a比特的拼接结果;
根据所述k*n+a比特的拼接结果,确定所述布尔掩码后的输出数据。
在一些可选的实施例中,所述输入数据为4字节数据,比特长度共32比特;或者,所述输入数据为8字节数据,比特长度共64比特。
在一些可选的实施例中,所述查找表通过如下方法获得:
根据第一随机数和第二随机数,确定特定比特位宽k位的查表空间[0,2k-1]内的每个第一数值所对应的布尔掩码值,根据各个第一数值及其对应的布尔掩码值,生成布尔掩码表,其中,所述第一随机数为k比特长度的随机整数,第二随机数为1比特长度的随机整数;
根据所述第二随机数和第三随机数生成进位表,其中,所述第三随机数的比特长度基于输入数据的比特长度和所述特定比特位宽k进行设定;
基于所述布尔掩码表和所述进位表,确定所述查找表。
根据本申请实施例的第二方面,提供了一种数据处理装置,应用于算术掩码到布尔掩码转换,所述装置包括:
查找单元,用于将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,其中,所述特定比特位宽k的设定满足对应的查找目标存储在所述查找表中时占一个预定的最小数据存储单元;
确定单元,用于根据所述多次查找的结果,确定布尔掩码后的输出数据。
根据本申请实施例的第三方面,提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;所述存储器,用于存储计算机程序;所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行前述第一方面所述的方法。
根据本申请实施例的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的方法。
根据本申请实施例的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如第一方面所述的方法。
本申请实施例提供的数据处理方案,在应用于算术掩码到布尔掩码转换时,一方面,由于能够将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,并且特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元,再根据多次查找的结果,确定布尔掩码后的输出数据,因此可以避免使用完整的输入数据在查找表中进行查找,使得使用的查找表需要占用的存储空间无需过大,且保证了技术方案在嵌入式系统中实现的可行性;另一方面,由于本申请实施例的技术方案中在将输入数据分为特定比特位宽k的长度时,特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元,因此能够使得查找表对于存储空间的利用率基本能够达到100%。综上可见,本申请实施例中的数据处理方案在避免查找表占用的存储空间过大的基础上,同时尽可能地提高了查找表对于存储空间的利用率,从而有效地改善了背景技术中的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例中的一种示例性的数据处理方法的步骤流程图。
图2示出了本申请实施例中的一种示例性的查找表的生成方法的步骤流程图。
图3示出了本申请实施例中的一种示例性的数据处理装置的结构框图。
图4示出了本申请实施例中的一种示例性的电子设备的结构框图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本申请实施例中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。需要注意,本申请实施例中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
根据本申请实施例的第一方面,提供一种数据处理方法。图1为本申请实施例中的一种示例性的数据处理方法的步骤流程图。该数据处理方法应用于算术掩码到布尔掩码转换。参照图1所示,该数据处理方法包括步骤S102和S104,具体地:
S102:将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,其中,特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元。
S104:根据多次查找的结果,确定布尔掩码后的输出数据。
本申请实施例通过上述步骤S102~S104提供的数据处理方案,在应用于算术掩码到布尔掩码转换时,一方面,由于能够将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,并且特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元,再根据多次查找的结果,确定布尔掩码后的输出数据,因此可以避免使用完整的输入数据在查找表中进行查找,使得使用的查找表需要占用的存储空间无需过大,且保证了技术方案在嵌入式系统中实现的可行性;另一方面,由于本申请实施例的技术方案中在将输入数据分为特定比特位宽k的长度时,特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元,因此能够使得查找表对于存储空间的利用率基本能够达到100%。综上可见,本申请实施例中的数据处理方案在避免查找表占用的存储空间过大的基础上,同时尽可能地提高了查找表对于存储空间的利用率。
下面对本申请实施例中的数据处理方案的细节进行具体说明,应理解,下文中的说明并非对本申请实施例中的任何限制。
在嵌入式系统中,数据均是以字节形式存储,常用的数据格式例如可以是uint8_t(1字节共8比特数据)、uint16_t(2字节共16比特数据)、uint32_t(4字节共32比特数据)、uint64_t(8字节共64比特数据)等,对于比特长度不在其中的数据,可以预设能够满足存储需求的最小数据存储单元进行存储。
本申请实施例中,输入数据可以是算术掩码的一个分量,本文中以A表示输入数据。本申请实施例中不对输入数据的类型和比特长度进行具体限定。可选地,输入数据A可以为4字节数据,比特长度共32比特,或者,输入数据A可以为8字节数据,比特长度共64比特。由于在HASH运算中基本数据单位一般是字(word),1个字通常是4字节或者8个字节,因此,本申请实施例中这些的类型和比特长度的输入数据,可以有效地满足输入数据在HASH运算的需求,便于实现算术掩码到布尔掩码转换。
或者在其他可选实施例中,输入数据A也可以为比特长度为k*m比特的数据,m大≥2且为正整数。
为便于说明本申请实施例,下文中会以“输入数据A为4字节数据,比特长度共32比特”以及“输入数据A为8字节数据,比特长度共64比特”两种实施方式进行分别举例,这里先不赘述。为便于查看和说明,下文将部分“比特”的单位以本领域中通用的“bit”进行代指。
本申请实施例中,比特长度可以是指某一数据所占的比特位数。例如以4位的二进制数据“1101”为例,则该二进制数据的比特长度就是4比特,即4bit;又例如以8位的二进制数据“10111101”为例,则该二进制数据的比特长度就是8比特,即8bit。其余情形可以以此类推,再次不进行赘述。
本申请实施例中,特定比特位宽k可以是将输入数据A分成片段数据的比特长度,使用片段数据在查找表中进行查表。例如,以输入数据A为比特长度为k*m比特的数据,则可以按照特定比特位宽k将输入数据A分为m个特定比特位宽k的长度的片段数据;又例如,以输入数据A为比特长度为k*n+a比特的数据,则至少可以按照特定比特位宽k将输入数据A分为n个特定比特位宽k的长度的片段数据、和一个比特长度为a比特的片段数据。
本申请实施例中,查找目标可以是在查找表中进行查找的目标结果。每次查找得到的目标结果可以相同也可以不同。查找表可以理解为一个数据库。并且,查找表中可以指示多个数据与多个查找目标的对应关系。通过利用将输入数据A分为的特定比特位宽k的长度的某一数据在查找表进行查找,可以从查找表中得到唯一确定的数据。
本申请实施例中,预定的最小数据存储单元的存储空间大小可以按照实际的需要设定,例如,最小数据存储单元可以包括一个或者多个字节的存储空间。
例如,在一些可选的实施例中,最小数据存储单元的存储空间大小为8x比特(也等于x个字节),其中,x≥1且为正整数;查找目标为包含进位符的8x比特的数据,并且,特定比特位宽k为8x-1比特。
基于此,通过这样的可选实施方式,一方面,本申请实施例中可以通过将输入数据分为k=8x-1比特的长度在查找表中多次查找包含进位符的8x比特的查找目标,这样可以有效地满足算术掩码到布尔掩码转换时的加减法运算的进位需求,并且,由于无需使用完整的输入数据在查找表中进行查找,使得使用的查找表需要占用的存储空间无需过大,且保证了技术方案在嵌入式系统中实现的可行性;另一方面,由于可以按字节使用存储空间,而每字节为8比特,因此,本申请实施例的技术方案中采用8x比特存储空间大小的最小数据存储单元,来存储查找表中8x比特的包含进位符的查找目标,使得进位符无需单独再多占用1个字节存储空间,这样就防止了被单独占用1字节的存储空间中除进位符以外的存储空间的浪费;再一方面,由于查找表中包含进位符的查找目标刚好是8x比特,使得最小数据存储单元(8x比特,即x个字节)的存储空间可以被完全利用,因此查找表对于存储空间的利用率基本能够达到100%,从而尽可能地提高了查找表对于存储空间的利用率。
可选地,进位符是1比特的数据,并且,查找目标的8x比特数据中的最高位为进位符。
本申请实施例中,x和k可以按照需要选择。优选地,可以选择x=1、k=7比特,这种情况下也即,最小数据存储单元的存储空间大小为8比特,所述查找目标为包含进位符的8比特的数据,并且,特定比特位宽k为7比特。
基于此,通过这样的优选实施方式,一方面,本申请实施例中可以通过将输入数据分为7比特的长度在查找表中多次查找包含进位符的8比特的查找目标,这样可以有效地满足算术掩码到布尔掩码转换时的加减法运算的进位需求,并且,由于无需使用完整的输入数据在查找表中进行查找,使得使用的查找表需要占用的存储空间无需过大,且更够更好地保证技术方案在嵌入式系统中实现的可行性;另一方面,由于可以按字节使用存储空间,而每字节为8比特,因此,本申请实施例的技术方案中采用8比特存储空间大小的最小数据存储单元,来存储查找表中8比特的包含进位符的查找目标,使得进位符无需单独再多占用1个字节存储空间,这样就防止了被单独占用1字节的存储空间中除进位符以外的存储空间的浪费;再一方面,由于查找表中包含进位符的查找目标刚好是8比特,使得最小数据存储单元(8比特,即1个字节)的存储空间可以被完全利用,因此查找表对于存储空间的利用率基本能够达到100%,从而尽可能地提高了查找表对于存储空间的利用率。
或者,在满足需要时,x也可以设定为2、4,则相应的k可以为15比特、31比特,等等,本申请实施例中对此不进行特比限定。为了更便于对本申请实施例的技术方案进行说明,下文中均以x=1、k=7比特进行举例说明。
下面,以x=1,最小数据存储单元的存储空间大小为8比特,以特定比特位宽k分别设定为7比特、4比特、8比特对上文实施例中的有益效果进行对比说明。其中,特定比特位宽k为4比特、8比特的例子可以视为本申请实施例的相关技术,应理解,这里说的相关技术未必是指现有技术。
优选实施例:特定比特位宽k=7比特时,输入数据A的比特长度以4字节即32比特或者8字节即64比特为例,则虽然k=7比特不能被32比特或者64比特整除,但是查找表中的查找目标包括1比特的进位符,刚好共8比特(也即查找目标存储在查找表中时能够占一个最小数据存储单元),使得最小数据存储单元的8比特存储空间可以被8比特数据的查找目标完全利用,这样存储空间的利用率为:8/8=100%。
对比例①:特定比特位宽k=4比特时,输入数据A的比特长度以4字节即32比特或者8字节即64比特为例,则虽然k=4比特能被32比特或者64比特整除,但是查找表中的查找目标包括1比特的进位符,共5比特,使得查找目标在最小数据存储单元的8比特存储空间仅占用了5比特(也即查找目标存储在查找表中时未能占一个最小数据存储单元),因此,最小数据存储单元的8比特存储空间中有(8-3)/8=37.5%未被利用,因而相较于k=7比特的优选实施方式来说,浪费了较多的存储空间。
对比例②:特定比特位宽k=8比特时,输入数据A的比特长度以4字节即32比特或者8字节即64比特为例,则虽然k=8比特能被32比特或者64比特整除,但是查找表中的查找目标包括1比特的进位符,共9比特,使得查找目标的进位符需要单独占用一个最小存储单元中的1比特存储空间,这样使得该单独占用的一个最小存储单元中有7比特未被利用,因此相较于k=7比特的优选实施方式来说,浪费了7/(8+8)=43.8%的存储空间。
通过对比上述“优选实施例”和“对比例①、②”,可以看出本申请实施例技术方案中的k=7比特的优选实施例,能够有效地提高查找表对于存储空间的利用率。
本申请实施例中,查找表可以预先生成,在需要时直接使用即可。在一些可选的实施例中,参照图2所示的流程图所示,查找表通过如下步骤S202、S204和S206的可选方法获得,具体地:
S202:根据第一随机数和第二随机数,确定特定比特位宽k位的查表空间[0,2k-1]内的每个第一数值所对应的布尔掩码值,根据各个第一数值及其对应的布尔掩码值,生成布尔掩码表,其中,第一随机数为k比特长度的随机整数,第二随机数为1比特长度的随机整数。
可选地,可将布尔掩码表记为G,布尔掩码表G遍历查表空间[0,2k-1]中的所有值。布尔掩码表G用于算术掩码到布尔掩码的转换。可选地,可将第一随机数记为r,第二随机数记为ρ。以k=7比特为例,则r为7比特长度的随机整数,ρ为1比特长度的随机整数(即ρ可以为0或者1)。
以k=7比特为例,查表空间[0,2k-1]则为[0,27-1]。[0,27-1]内的每个第一数值,以二进制数据为例,所有的第一数值可以是0000000~1111111中的27个第一数值。通过确定27个第一数值对应的布尔掩码值,生成布尔掩码表G。布尔掩码表中的布尔掩码值也是k比特的数据。
可选地,可以如下公式1确定布尔掩码表G:
G[A’]=(A’+r)⊕(ρ||r) (公式1)
其中,A’表征[0,2k-1]内的每个第一数值;G[A’]表征每个第一数值A’对应的布尔掩码值;r表征第一随机数,为k比特长度的随机整数;ρ表征第二随机数,为1比特长度的随机整数。另外,“||”表示拼接操作,ρ||r即是指将1比特长度的ρ拼接在k比特长度的r的最高位前面(例如,假设r为1101101,ρ为0,则ρ||r为01101101)。
第一随机数r可用于掩盖真实数据(即第一数值A’),第二随机数ρ可用于掩盖进位。之所以需要第二随机数ρ,也是因为A’+r可能会产生进位。
通过包括将上述公式的可选实施方式,循环通过不同的第一数值A’计算G[A’],可以准确快速的生成布尔掩码表G,以便于后续基于布尔掩码表G确定查找表。
S204:根据第二随机数和第三随机数生成进位表,其中,第三随机数的比特长度基于输入数据的比特长度和特定比特位宽k进行设定。
可选地,可将进位表记为C,第三随机数记为γ,第二随机数仍为步骤S202中的ρ。
第三随机数γ的比特长度,可基于后续需要查表的输入数据A的比特长度和特定比特位宽k进行合理设定。对于不同的输入数据A的比特长度和特定比特位宽k,第三随机数γ的比特长度可以不同。例如,可以确定输入数据A的比特长度除以特定比特位宽k,并取该除法结果的商和余数来确定第三随机数γ的比特长度。例如,将前述除法结果的商记为n,余数记为p,则第三随机数γ的比特长度可以为:(n-1)*k+p比特。
例如,以输入数据A为4字节共32比特、特定比特位宽k=7比特为例,32/7=4余4,则商为4,余数为4,则第三随机数γ的比特长度可以确定为:(n-1)*k+p=(4-1)*7+4=25比特;又例如,以输入数据A为8字节共64比特、特定比特位宽k=7比特为例,64/7=9余1,则商为9,余数为1,则第三随机数γ的比特长度可以确定为:(n-1)*k+p=(9-1)*7+1=57比特。应理解,这里仅作为一些示例,并不作为对本申请实施例中的限制。需要说明的是,这种情况是对应于下文中输入数据A的比特长度为k*n+a比特的情况(即输出数据A的比特长度为特定比特位宽k的非整数倍的情况)。
而如果是下文中输入数据A的比特长度为k*m比特的情况(即输出数据A的比特长度为特定比特位宽k的整数倍的情况),那么商为m,而余数p可以视为等于0,则第三随机数γ的比特长度可以为:(m-1)*k比特。
可选地,可以如下公式2.1和公式2.2确定进位表C:
C[ρ]=γ (公式2.1)
C[ρ⊕1]=(γ+1)mod 2LEN(γ) (公式2.2)
公式2.2中,“mod”是取模运算,“LEN(γ)”表示第三随机数γ的比特长度。当布尔掩码表G的A’+r未产生进位,可使用公式2.1计算;当布尔掩码表G的A’+r产生进位,可使用公式2.2计算。
通过包括将上述公式的可选实施方式,可以准确快速的生成进位表C,以便于后续基于布尔掩码表G和进位表C确定查找表。
S206:基于布尔掩码表和进位表,确定查找表。
可选地,布尔掩码表G和进位表C两者可组成查找表,使得查找表中的查找目标既包括需要的k比特长度的数据也包括1比特的用于进位的进位符。
另外,可参考如下伪代码,对生成布尔掩码表G和进位表C组成查找表的示例进行理解。应理解,如下伪代码仅作为示例,并非对本申请实施例中的任何限制。
伪代码如下:
上述示例的伪代码中,输出即为布尔掩码表G和进位表C,两者组合即为查找表;其中的“A”即代指前述的第一数值A’,而非输入数据A,这里是为伪代码编写方便以字母A代指。此外,其中的k即特定比特位宽,r即前述的第一随机数,ρ即前述的第二随机数,γ即前述的第三随机数。“mod”是取模运算,“LEN(γ)”表示第三随机数γ的比特长度。例如,以k=7bit为例,则r为7比特长度的随机整数,ρ为1比特长度的随机整数;对于4字节(32bit)的输入数据转换,则γ为25比特长度的随机整数;对于8字节(64bit)的输入数据转换,则γ为57比特长度的随机整数(可参照前文相关部分理解)。
基于此,本申请实施例中通过上述步骤S202~S206的可选实施方式生成的查找表,可以有效地生成查找表,并使得使用该查找表时,将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,对应的查找目标在存储于查找表中时可占一个预定的最小数据存储单元,这样保证了使用的查找表需要占用的存储空间不会过大,且保证了技术方案在嵌入式系统中实现的可行性,此外,能够使得查找表对于存储空间的利用率基本能够达到100%,从而在避免查找表占用的存储空间过大的基础上,同时可尽可能地提高查找表对于存储空间的利用率。
可选地,本申请实施例的步骤S102中,可以通过如下方式实现:按照从输入数据的从低位到高位的顺序,将输入数据分为多个特定比特位宽k的长度的片段数据在查找表中进行多次查找。
基于此,本申请实施例中按照从输入数据的从低位到高位的顺序,将输入数据分为的多个特定比特位宽k的长度的片段数据,可保证依据将输入数据分为的多个特定比特位宽k的长度的片段数据在在查找表中进行多次查表得到的结果准确性。
按照输入数据A的比特长度的不同情况,在一些可选的实施例中,上述步骤“按照从输入数据的从低位到高位的顺序,将输入数据分为多个特定比特位宽k的长度的片段数据在查找表中进行多次查找”可以包括如下情形1和情形2,具体地:
情形1:若输入数据的比特长度为k*n+a比特,则按照从输入数据的从低位到高位的顺序,至少将输入数据的低k*n比特数据分为n个特定比特位宽k的长度的片段数据,并根据n个特定比特位宽k的长度的片段数据,在查找表中进行n次查找,其中,n≥2且为正整数,1≤a≤k且为正整数。
对于此情形1,以最小数据存储单元的存储空间大小为8比特,特定比特位宽k=7比特,举如下几个示例进行说明。
示例1:以输入数据A为4字节数据即比特长度共32比特,其满足上述“输入数据的比特长度为k*n+a比特”的形式,这里n=4且a=4(并且满足a>1的形式)。例如,可将输入数据A的32比特从低位到高位记为第0位到第31位,则可以按照低位到高位,将第0~6位分为第1个特定比特位宽k=7比特的长度的片段数据,将第7~13位分为第2个特定比特位宽k=7比特的长度的片段数据,将第14~20位分为第3个特定比特位宽k=7比特的长度的片段数据,将第21~27位分为第4个特定比特位宽k=7比特的长度的片段数据(第0~27位即低k*n比特数据),另外,将第28~31位单独分为1个4比特的片段数据。这样,后续至少可以采用4个k=7比特的片段数据在查找表中进行n=4次查找,得到n次查找的结果,参照下文内容可知还可以利用1个4比特的片段数据进行单独查表。
示例2:与上述“示例1”同理,若输入数据A为8字节数据即比特长度共64比特,其满足上述“输入数据的比特长度为k*n+a比特”的形式,这里n=9且a=1(并且满足a=1的形式)。例如,将输入数据A的64比特从低位到高位记为第0位到第63位(第0~62位即低k*n比特数据),则共可按照低位到高位,将第0~62位,依次分成第1~9个特定比特位宽k=7比特的长度的片段数据,另外,将第63位单独分为1个1比特的片段数据。这样,后续至少可以采用9个k=7比特的片段数据在查找表中进行n=9次查找,得到n次查找的结果,参照下文内容可知还可利用该1个1比特的片段数据来单独处理。
示例1和示例2中,在进行n次查找时,可以是在分完n个k比特的片段数据之后,再依次进行n次查找,查找到n个结果;或者,也可以是每分为1个k比特的片段数据之后,进行1次查找,查找完之后再分为1个k比特的片段数据,之后再进行1次查找,循环执行以总共进行n次查找,查找到n个结果。
基于此,本申请实施例中通过情形1所述的可选实施方式,一方面,能够有效地保证在输入数据的比特长度为k*n+a比特时,依据将输入数据分为的至少n个特定比特位宽k的长度的片段数据在在查找表中进行多次查表得到的结果准确性;另一方面,由于无需使用完整的k*n+a比特的输入数据在查找表中进行查找,使得使用的查找表需要占用的存储空间无需过大,且更够更好地保证技术方案在嵌入式系统中实现的可行性;再一方面,由于上述情形1可选实施方式中在将k*n+a比特的输入数据分为特定比特位宽k的长度时,特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元,因此能够使得查找表对于存储空间的利用率基本能够达到100%。因而,本申请实施例中上述情形1的可选实施方式在避免查找表占用的存储空间过大的基础上,同时尽可能地提高了查找表对于存储空间的利用率。
可选地,为提高运算速度,在将输入数据分为n个k特定比特位宽的片段数据以及高a比特的片段数据时,可以通过寄存器的位宽来进行截取,例如寄存器的位宽可为8bit,k=7比特,则可采用多次移位的方式,对输入数据每次移k=7位,将处于寄存器中的k=7位数据截取作为一个片段数据,最后再移位可得到高a比特的片段数据。
情形2:若输入数据的比特长度为k*m比特,则按照从输入数据的从低位到高位的顺序,将输入数据分为m个特定比特位宽k的长度的片段数据,并根据m个特定比特位宽k的长度的片段数据,在查找表中进行m次查找,其中,m≥2且为正整数。
对于此情形2,以最小数据存储单元的存储空间大小为8比特,特定比特位宽k=7比特,举如下示例3进行说明。
示例3:若输入数据A的比特长度为k*m比特(应理解,这种情况比较容易理解,因此不在单独以具体示例说明),则可以直接按照从低位到高位的顺序,将k*m比特分成第1~m个k比特的片段数据,直接根据m个k比特的片段数据在查找表中进行查找,得到m次查找的结果。
与示例1和示例2类似,在示例3中,在进行m次查找时,可以是在分完m个k比特的片段数据之后,再依次进行m次查找,查找到m个结果;或者,也可以是每分为1个k比特的片段数据之后,进行1次查找,查找完之后再分为1个k比特的片段数据,之后再进行1次查找,循环执行以总共进行m次查找,查找到m个结果。
基于此,本申请实施例中通过情形2所述的可选实施方式,一方面,能够有效地保证在输入数据的比特长度为k*m比特时,依据将输入数据分为的m个特定比特位宽k的长度的片段数据在在查找表中进行多次查表得到的结果准确性;另一方面,由于无需使用完整的k*m比特的输入数据在查找表中进行查找,使得使用的查找表需要占用的存储空间无需过大,且能够更好地保证技术方案在嵌入式系统中实现的可行性;再一方面,由于上述情形2可选实施方式中在将k*m比特的输入数据分为特定比特位宽k的长度时,特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元,因此能够使得查找表对于存储空间的利用率基本能够达到100%。因而,本申请实施例中上述情形2的可选实施方式在避免查找表占用的存储空间过大的基础上,同时尽可能地提高了查找表对于存储空间的利用率。
可选地,为提高运算速度,在将输入数据分为m个k特定比特位宽的片段数据以及高a比特的片段数据时,可以通过寄存器的位宽来进行截取,例如寄存器的位宽可为8bit,k=7比特,则可采用多次移位的方式,对输入数据每次移k=7位,将处于寄存器中的k=7位数据截取作为一个片段数据。
下面再结合本申请实施例中上述情形1和情形2对步骤S104的详细内容进行说明。
对于上述情形1,在一些可选的实施例中,若输入数据为a>1,则利用输入数据的高a比特数据,在查找表中进行1次查找;则步骤S104包括:根据n次查找的结果和所述1次查找的结果,确定布尔掩码后的输出数据。(为便于下文中引用,将此“根据n次查找的结果和所述1次查找的结果,确定布尔掩码后的输出数据”记为步骤S104A。)
基于此,本申请实施例中通过这样的可选实施方式,在输入数据的比特长度为k*n+a比特且a>1时,可以有效地根据在查找表中进行多次查找的结果,确定布尔掩码后的数据;并且,本申请实施例的方案中对算法效率和存储空间利用率上做了有效的平衡,也即,在能够显著提高存储空间利用率的情况下,也并未较多地降低算法效率,因而更能较好地满足数据处理的需求。
例如,以本申请实施例中特定比特位宽k=7比特的可选方案来说,其相较于特定比特位宽为8比特的技术方案(即前文中的对比例②)来说,本申请实施例上述技术方案,在用于输入数据为4个字节共32比特的算术掩码到布尔掩码转换时(也即对应于上述“示例1”,满足a>1的形式),在存储空间的利用率基本能够达到100%的基础上,仅需增加1次查表(即32比特输入数据,n=4,a=4>1,本方案需要n+1=4+1=5次(而特定比特位宽为8比特的技术方案则是4次)),因此,虽然本申请实施例中的特定比特位宽k=7比特的方案,相较于特定比特位宽为8比特的技术方案来说,对算法效率和存储空间利用率上做了有效的平衡,在能够显著提高存储空间利用率的情况下,也并未较多地降低算法效率,查表次数依然可以维持在较低水平,有效提升了软件性能,因而更能较好地满足数据处理的需求。
在一些可选的实施例中,所述S104A可以包括子步骤S104A1和S104A2,具体地:
S104A1:根据n次查找的结果中的每次结果的低k位数据、以及1次查找的结果的低a位数据,按照从低位到高位的顺序进行依次拼接,以得到比特长度为k*n+a比特的拼接结果。
以上述“示例1”(示例1中特定比特位宽k=7比特,输入数据A为4字节数据即比特长度共32比特)继续举例,在查表得到了n=4次查找的结果后,因此可将4次查找的结果的低7位数据确定出来,例如4个低7位数据从低位到高位的顺序分别依次记为B0、B1、B2、B3,再将根据输入数据A的高a=4比特数据进行1次查找的结果的低a=4比特数据确定出来。该1次查找的结果低a=4比特数据也可记为LSB4(B4)。之后,按照从低位到高位的顺序拼接成形如:“LSB4(B4)||B3||B2||B1||B0”的形式,以得到一个k*n+a=32比特长度的拼接结果。其他类似情况可以此类推,在此不再赘述。
S104A2:根据k*n+a比特的拼接结果,确定布尔掩码后的输出数据。
在得到k*n+a比特的拼接结果,则可以根据拼接结果确定布尔掩码后的输出数据,以便于后续对输出数据进行使用。
可选地,可以将k*n+a比特的拼接结果,与k*n+a比特的第四随机数进行异或逻辑运算,得到布尔掩码后的输出数据,其中,k*n+a比特的第四随机数可以由n个第一随机数r依次拼接后、再将1个第一随机数r的低a(a>1)位拼接到最前面得到。
基于包括上述S104A1~S104A2的可选实施方式,在输入数据的比特长度为k*n+a比特且a>1时,可以有效地根据根据n次查找的结果、和对输入数据的高a比特数据进行的1次查找的结果,确定布尔掩码后的输出数据,以便于后续对布尔掩码后的输出数据进行使用;并且,本申请实施例的方案中对算法效率和存储空间利用率上做了有效的平衡,也即,在能够显著提高存储空间利用率的情况下,也并未较多地降低算法效率,因而更能较好地满足数据处理的需求。
可选地,可参考如下伪代码,对上述特定比特位宽k=7比特、输入数据A为4字节数据即比特长度共32比特的查表、和确定布尔掩码后的输出数据的示例过程进行理解。
伪代码如下:
上述示例的伪代码中,输入为:输入数据A、算术掩码的另一个分量R(与输入数据A相同比特长度的随机数)、第一随机数r、第二随机数ρ、第三随机数γ、以及查找表(即布尔掩码表G和进位表C),输出为布尔掩码后的输出数据。特定比特位宽k=7bit,则r为7比特长度的随机整数,ρ为1比特长度的随机整数,γ为25比特长度的随机整数(r、ρ、γ可参照前文相关部分理解)。输入数据A在上述伪代码中的另一种表示方式为:Ah||Al,另一个分量R在上述伪代码中的另一种表示方式为:Rh||Rl,Al和Rl分别是A和R的低k(k=7)比特数据,Ah是A中除Al以外的数据,Rh是R中除Rl以外的数据。上述伪代码中,Bi为第i次查表得到的结果“β||Bi”中的低k比特数据(对应于上述for语句,i=0to 3,则Bi即前述的B0、B1、B2、B3),β是伪代码编写时使用的1比特的数据,用作进位使用,以便于G[Al]向β||Bi赋值。
应理解,对于上述示例的伪代码,通过for语句可以实现4次循环(即0to 3),分别将输入数据A的第0~6位、第7~13位、第14~20位、第21~27位,这4个特定比特位宽k=7比特的长度的片段数据进行查表,得出对应的查表结果的4个低k比特数据B0、B1、B2、B3。之后在通过倒数第4行~倒数第2行的伪代码,对输入数据A的第28~31位的高4比特的片段数据进行单独查表,得到第5个低k比特数据B4,从而可根据B4得到LSB4(B4),LSB4(B4)即表示B4的低4比特数据。“LSB4(B4)||B3||…||B0”即5次查表得到k*n+a比特的拼接结果,“LSB4(r)||r||…||r”可通过4个第一随机数r依次拼接后、再将1个第一随机数r的低4位拼接到前面。最终输出的(LSB4(B4)||B3||…||B0)⊕(LSB4(r)||r||…||r)即为布尔掩码后的输出数据。
应理解,上述伪代码仅作为示例,并非对本申请实施例中的任何限制。
对于上述情形1,在一些可选的实施例中,若a=1,则利用输入数据的高a比特数据与第一随机数的低a位进行异或逻辑运算,其中,第一随机数为k比特长度的随机整数;则步骤S104包括:根据n次查找的结果和异或逻辑运算的结果,确定布尔掩码后的输出数据。(为便于下文中引用,将此“根据n次查找的结果和所述异或逻辑运算的结果,确定布尔掩码后的输出数据”记为步骤S104B。)
基于此,本申请实施例中通过这样的可选实施方式,在输入数据的比特长度为k*n+a比特且a=1时,可以有效地根据在查找表中进行多次查找的结果,确定布尔掩码后的数据;并且,本申请实施例的方案中对算法效率和存储空间利用率上做了有效的平衡,也即,在能够显著提高存储空间利用率的情况下,也并未较多地降低算法效率,因而更能较好地满足数据处理的需求;此外,由于输入数据的最高位(即高a=1比特数据)不再单独查表,而是与第一随机数的低a位进行异或逻辑运算,运算速度也更快,也避免了再多一次查表。
例如,以本申请实施例中特定比特位宽k=7比特的可选方案来说,其相较于特定比特位宽为8比特的技术方案(即前文中的对比例②)来说,本申请实施例上述技术方案,在用于输入数据为8个字节共64比特的算术掩码到布尔掩码转换时(也即对应于上述“示例2”,满足a=1的形式),在存储空间的利用率基本能够达到100%的基础上,仅需增加1次查表(即64比特输入数据,n=9,a=1,输入数据的高a=1比特数据不查表直接与第一随机数的低a位进行异或逻辑运算,则本方案需要n=9次,(而特定比特位宽为8比特的技术方案则是8次)),因此,虽然本申请实施例中的特定比特位宽k=7比特的方案,相较于特定比特位宽为8比特的技术方案来说,对算法效率和存储空间利用率上做了有效的平衡,在能够显著提高存储空间利用率的情况下,也并未较多地降低算法效率,查表次数依然可以维持在较低水平,有效提升了软件性能,因而更能较好地满足数据处理的需求。
此外,之所以可以采用对输入数据的高1比特数据与第一随机数的低1位进行异或逻辑运算,是因为对于两个1比特数据之间的运算来说,异或逻辑运算的结果与算术逻辑运算结果的低1位相同(例如,1和1异或得到0,而1和1算术运算(加法、减法)的结果的低1位也是0;1和0异或得到1,而1和0算术运算的结果的低1位也是1;0和1异或得到1,而0和1算术运算的结果的低1位也是1;0和0异或得到0,而0和0算术运算的结果的低1位也是0。),因此,采用异或逻辑运算得到的结果,与采用高1比特数据单独查表得到查表结果后再取低1位得到的结果相同。由此,采用这种方式,输入数据的最高位(即高a=1比特数据)不再单独查表,既能保证运算准确,运算速度也比查表速度更快,还可避免多一次查表的过程。
在一些可选的实施例中,所述S104B可以包括子步骤S104B1和S104B2,具体地:
S104B1:根据n次查找的结果中的每次结果的低k位数据、以及异或逻辑运算的结果,按照从低位到高位的顺序进行依次拼接,以得到比特长度为k*n+a比特的拼接结果。
以上述“示例2”(示例2中特定比特位宽k=7比特,输入数据A为8字节数据即比特长度共64比特)继续举例,在查表得到了n=9次查找的结果后,因此可将9次查找的结果的低7位数据确定出来,例如9个低7位数据从低位到高位的顺序分别依次记为B0、B1、...、B8,再将根据输入数据A的高a=1比特数据(即输入数据A的最高位数据)与第一随机数r的低a=1位(即第一随机数r的最低位数据)进行异或逻辑运算确定出来。例如将异或逻辑运算的结果记为LSB(B9)(此处可以这样简单理解,该异或逻辑运算的结果可以相当于第10次查表得到的结果B9的低1位,只不过本申请实施例中不再进行这一次查表而是使用异或逻辑运算来实现)。之后,按照从低位到高位的顺序拼接成形如:“LSB(B9)||B8||B7||...||B2||B1||B0”的形式,以得到一个k*n+a=64比特长度的拼接结果。其他类似情况可以此类推,在此不再赘述。
S104B2:根据k*n+a比特的拼接结果,确定布尔掩码后的输出数据。
在得到k*n+a比特的拼接结果,则可以将根据拼接结果确定布尔掩码后的输出数据,以便于后续对输出数据进行使用。
可选地,可以将k*n+a比特的拼接结果,与k*n+a比特的第四随机数进行异或逻辑运算,得到布尔掩码后的输出数据,其中,k*n+a比特的第四随机数可以由n个第一随机数r依次拼接后、再将1个第一随机数r的低a(a=1)位拼接到最前面得到。
基于包括上述S104B1~S104B2的可选实施方式,在输入数据的比特长度为k*n+a比特且a=1时,可以有效地根据根据n次查找的结果、和对输入数据的高a比特数据与第一随机数r的低a位进行异或逻辑运算的结果,确定布尔掩码后的输出数据,以便于后续对布尔掩码后的输出数据进行使用;并且,本申请实施例的方案中对算法效率和存储空间利用率上做了有效的平衡,也即,在能够显著提高存储空间利用率的情况下,也并未较多地降低算法效率,因而更能较好地满足数据处理的需求。
可选地,可参考如下伪代码,对上述特定比特位宽k=7比特、输入数据A为8字节数据即比特长度共64比特的查表、和确定布尔掩码后的输出数据的示例过程进行理解。
伪代码如下:/>
上述示例的伪代码中,输入为:输入数据A、算术掩码的另一个分量R(与输入数据A相同比特长度的随机数)、第一随机数r、第二随机数ρ、第三随机数γ、以及查找表(即布尔掩码表G和进位表C),输出为布尔掩码后的输出数据。特定比特位宽k=7bit,则r为7比特长度的随机整数,ρ为1比特长度的随机整数,γ为57比特长度的随机整数(r、ρ、γ可参照前文相关部分理解)。输入数据A在上述伪代码中的另一种表示方式为:Ah||Al,另一个分量R在上述伪代码中的另一种表示方式为:Rh||Rl,Al和Rl分别是A和R的低k(k=7)比特数据,Ah是A中除Al以外的数据,Rh是R中除Rl以外的数据。上述伪代码中,Bi为第i次查表得到的结果“β||Bi”中的低k比特数据(对应于上述for语句,i=0to 8,则Bi即前述的B0、B1、...、B8),β是伪代码编写时使用的1比特的数据,用作进位使用,以便于G[Al]向β||Bi赋值。
应理解,对于上述示例的伪代码,通过for语句可以实现9次循环(即0to 8),分别将输入数据A的第0~63位中的第0~6位、第7~13位、第14~20位、第21~27位、第28~34位、第35~41位、第42~48位、第49~55位、第56~62位,这9个特定比特位宽k=7比特的长度的片段数据进行查表,得出对应的查表结果的9个低k比特数据B0、B1、...、B8。对输入数据A的第63位的高1比特数据与第一随机数r的低1位进行异或逻辑运算,得到结果LSB(B)(这里也可以以LSB(B9)来理解,其可以相当于第10次查表得到的结果B9的低1位,只不过本申请实施例中不再进行这一次查表而是使用异或逻辑运算来实现)。“LSB(B)||B8||…||B0”即根据9次查表的结果中的低k=7位数据、以及异或逻辑运算的结果进行拼接后k*n+a比特的拼接结果,“LSB(r)||r||…||r”可通过9个第一随机数r依次拼接后、再将1个第一随机数r的低1位拼接到前面。最终输出的(LSB(B)||B8||…||B0)⊕(LSB(r)||r||…||r)即为布尔掩码后的输出数据。
应理解,上述伪代码仅作为示例,并非对本申请实施例中的任何限制。
对于上述情形2,在一些可选的实施例中,步骤S104(为与前面情形1的S104A和S104B进行区分,这里记为S104C)包括如下子步骤S104C1和S104C2,具体地:
S104C1:根据m次查找的结果中的每次结果的低k位数据,按照从低位到高位的顺序进行依次拼接,以得到比特长度为k*m比特的拼接结果;
以上述“示例3”继续举例,得到m次查找的结果,可将m次查找的结果的低7位数据确定出来,例如将m个查找的结果的低7位数据分别记为B0、B1、...、Bm-1。之后,按照从低位到高位的顺序拼接成形如:“Bm-1||Bm-2||...||B1||B0”的形式,以得到一个k*m比特长度的拼接结果。这种情况比较容易理解,因此不再单独说明。其他类似情况可以此类推,在此不再赘述。
S104C2:根据k*m比特的拼接结果,确定布尔掩码后的输出数据。
在得到k*m比特的拼接结果,则可以将拼接结果确定为布尔掩码后的输出数据,以便于后续对输出数据进行使用。
可选地,可以将k*m比特的拼接结果,与k*m比特的第四随机数进行异或逻辑运算,得到布尔掩码后的输出数据,其中,k*m比特的第四随机数可以由m个第一随机数r依次拼接拼接到最前面得到。
基于包括上述S104C1~S104C2的可选实施方式,可以有效地实现根据多次查找的结果,确定布尔掩码后的输出数据,以便于后续对布尔掩码后的输出数据进行使用。
可选地,参照下表1所示,对实现本申请实施例中的特定比特位宽k为7比特的可选实施方式时,所需占用的存储空间大小进行说明:
表1
上述表1中,“LEN(Word)=4”是指对4字节共32比特的输入数据进行算术掩码到布尔掩码转换,“LEN(Word)=8”是指对8字节共64比特的输入数据进行算术掩码到布尔掩码转换。上述表1中,没有标注单位的均以“字节”为单位。
由表1所示,生成的查找表中的布尔掩码表G在存储时需占用128字节的存储空间;第一随机数r为7比特数据,存储时需占用1字节的存储空间;第二随机数ρ为1比特数据,存储时需占用1字节的存储空间。
对于对4字节共32比特的输入数据进行算术掩码到布尔掩码转换,生成的查找表中的进位表C在存储时需占用8字节的存储空间,第三随机数γ为25比特数据,存储时需占用4字节的存储空间;因此实现时总共需占用:128+1+1+8+4=142字节的存储空间。
而对于对8字节共64比特的输入数据进行算术掩码到布尔掩码转换,生成的查找表中的进位表C在存储时需占用16字节的存储空间,第三随机数γ为57比特数据,存储时需占用8字节的存储空间;因此实现时总共需占用:128+1+1+16+8=154字节的存储空间。应理解,上述表1仅示出了一些可选的所需存储空间的示例,并不作为对本申请实施例中的任何限制。
可以理解的是,前述对数据处理方法进行的说明,仅作为对本申请实施例的一些示例性的说明,并不作为对本申请实施例的任何限制。
综上所述,本申请实施例提供的数据处理方案,在应用于算术掩码到布尔掩码转换时,一方面,由于能够将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,并且特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元,再根据多次查找的结果,确定布尔掩码后的输出数据,因此可以避免使用完整的输入数据在查找表中进行查找,使得使用的查找表需要占用的存储空间无需过大,且保证了技术方案在嵌入式系统中实现的可行性;另一方面,由于本申请实施例的技术方案中在将输入数据分为特定比特位宽k的长度时,特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元,因此能够使得查找表对于存储空间的利用率基本能够达到100%。综上可见,本申请实施例中的数据处理方案在避免查找表占用的存储空间过大的基础上,同时尽可能地提高了查找表对于存储空间的利用率,从而有效地改善了背景技术中的问题。
根据本申请实施例的第二方面,提供了一种数据处理装置。图3示出了本申请实施例的一种示例性的数据处理装置300的结构框图,本申请实施例的数据处理装置300包括:
查找单元302,用于将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,其中,特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元。
确定单元304,用于根据多次查找的结果,确定布尔掩码后的输出数据。
本申请实施例提供的数据处理方案,在应用于算术掩码到布尔掩码转换时,一方面,由于查找单元302能够将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,并且特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元,确定单元304再根据多次查找的结果,确定布尔掩码后的输出数据,因此可以避免使用完整的输入数据在查找表中进行查找,使得使用的查找表需要占用的存储空间无需过大,且保证了技术方案在嵌入式系统中实现的可行性;另一方面,由于本申请实施例的技术方案中在将输入数据分为特定比特位宽k的长度时,特定比特位宽k的设定满足对应的查找目标存储在查找表中时占一个预定的最小数据存储单元,因此能够使得查找表对于存储空间的利用率基本能够达到100%。综上可见,本申请实施例中的数据处理方案在避免查找表占用的存储空间过大的基础上,同时尽可能地提高了查找表对于存储空间的利用率,从而有效地改善了背景技术中的问题。
在一些可选的实施例中,所述最小数据存储单元的存储空间大小为8x比特,其中,x≥1且为正整数;所述查找目标为包含进位符的8x比特的数据,并且,所述特定比特位宽k为8x-1比特。
在一些可选的实施例中,x=1,k=7比特。
在一些可选的实施例中,所述查找单元302,具体用于:按照从所述输入数据的从低位到高位的顺序,将所述输入数据分为多个特定比特位宽k的长度的片段数据在所述查找表中进行多次查找。
在一些可选的实施例中,所述查找单元302,具体用于:若所述输入数据的比特长度为k*n+a比特,则按照从所述输入数据的从低位到高位的顺序,至少将所述输入数据的低k*n比特数据分为n个特定比特位宽k的长度的片段数据,并根据所述n个特定比特位宽k的长度的片段数据,在所述查找表中进行n次查找,其中,n≥2且为正整数,1≤a≤k且为正整数;若所述输入数据的比特长度为k*m比特,则按照从所述输入数据的从低位到高位的顺序,将所述输入数据分为m个特定比特位宽k的长度的片段数据,并根据所述m个特定比特位宽k的长度的片段数据,在所述查找表中进行m次查找,其中,m≥2且为正整数。
在一些可选的实施例中,所述数据处理装置300还用于:若a>1,则利用所述输入数据的高a比特数据,在所述查找表中进行1次查找;所述确定单元304,具体用于:根据所述n次查找的结果和所述1次查找的结果,确定所述布尔掩码后的输出数据。
在一些可选的实施例中,所述确定单元304,具体用于:根据所述n次查找的结果中的每次结果的低k位数据、以及所述1次查找的结果的低a位数据,按照从低位到高位的顺序进行依次拼接,以得到比特长度为k*n+a比特的拼接结果;根据所述k*n+a比特的拼接结果,确定所述布尔掩码后的输出数据。
在一些可选的实施例中,所述数据处理装置300还用于:若a=1,则利用所述输入数据的高a比特数据与第一随机数的低a位进行异或逻辑运算,其中,所述第一随机数为k比特长度的随机整数;所述确定单元304,具体用于:根据所述n次查找的结果和所述异或逻辑运算的结果,确定所述布尔掩码后的输出数据。
在一些可选的实施例中,所述确定单元304,具体用于:根据所述n次查找的结果中的每次结果的低k位数据、以及所述异或逻辑运算的结果,按照从低位到高位的顺序进行依次拼接,以得到比特长度为k*n+a比特的拼接结果;根据所述k*n+a比特的拼接结果,确定所述布尔掩码后的输出数据。
在一些可选的实施例中,所述输入数据为4字节数据,比特长度共32比特;或者,所述输入数据为8字节数据,比特长度共64比特。
在一些可选的实施例中,所述查找表通过如下方法获得:根据第一随机数和第二随机数,确定特定比特位宽k位的查表空间[0,2k-1]内的每个第一数值所对应的布尔掩码值,根据各个第一数值及其对应的布尔掩码值,生成布尔掩码表,其中,所述第一随机数为k比特长度的随机整数,第二随机数为1比特长度的随机整数;根据所述第二随机数和第三随机数生成进位表,其中,所述第三随机数的比特长度基于输入数据的比特长度和所述特定比特位宽k进行设定;基于所述布尔掩码表和所述进位表,确定所述查找表。
本申请实施例的数据处理装置300与上述第一方面提供的数据处理方法基于同一发明构思,用于实现前述多个方法实施例中相应的数据处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本申请实施例的数据处理装置300中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
根据本申请实施例的第三方面,提供一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;所述存储器,用于存储计算机程序;所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行前述第一方面所述的数据处理方法。
图4示出了本申请实施例中的一种可选的电子设备的结构框图。本申请实施例并不对该电子设备400的具体实现做限定,作为示例性地,参照图4,本申请实施例提供的电子设备400包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。其中:
处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
通信接口404,用于与其它电子设备或服务器进行通信。
处理器402,用于执行计算机程序410,具体可以执行前述任一数据处理方法实施例中的相关步骤。
具体地,计算机程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放计算机程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
计算机程序410具体可以用于使得处理器402执行前述任一实施例中的数据处理方法。
计算机程序410中各步骤的具体实现可以参见前述任一数据处理方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
本申请实施例中的电子设备400,在前述的数据处理方法实施例中已经详细说明,因此其相关内容及有益效果可参照上述的方法实施例进行理解,在此不再进行赘述。
根据本申请实施例的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的数据处理方法。
根据本申请实施例的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如第一方面所述的数据处理方法。
本申请实施例中的电子设备400/计算机存储介质/计算机程序产品实施例,在前述的数据处理方法实施例中已经详细说明,因此其相关内容及有益效果可参照上述的方法实施例进行理解,在此不再进行赘述。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的方法。此外,当通用计算机访问用于实现在此示出的方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
此外,需要说明的是,本申请实施例所涉及到的与用户有关的信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于对模型进行训练的样本数据、用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。需要注意,本申请实施例中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。需要注意,本申请实施例中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
以上实施方式仅用于说明本申请实施例,而并非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专利保护范围应由权利要求限定。
Claims (14)
1.一种数据处理方法,应用于算术掩码到布尔掩码转换,所述方法包括:
将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,其中,所述特定比特位宽k的设定满足对应的查找目标存储在所述查找表中时占一个预定的最小数据存储单元;
根据所述多次查找的结果,确定布尔掩码后的输出数据。
2.根据权利要求1所述的方法,其中,所述最小数据存储单元的存储空间大小为8x比特,其中,x≥1且为正整数;
所述查找目标为包含进位符的8x比特的数据,并且,所述特定比特位宽k为8x-1比特。
3.根据权利要求2所述的方法,其中,x=1,k=7比特。
4.根据权利要求1-3中任一项所述的方法,其中,所述将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,包括:
按照从所述输入数据的从低位到高位的顺序,将所述输入数据分为多个特定比特位宽k的长度的片段数据在所述查找表中进行多次查找。
5.根据权利要求4所述的方法,其中,所述按照从所述输入数据的从低位到高位的顺序,将所述输入数据分为特定比特位宽k的长度的片段数据在所述查找表中进行多次查找,包括:
若所述输入数据的比特长度为k*n+a比特,则按照从所述输入数据的从低位到高位的顺序,至少将所述输入数据的低k*n比特数据分为n个特定比特位宽k的长度的片段数据,并根据所述n个特定比特位宽k的长度的片段数据,在所述查找表中进行n次查找,其中,n≥2且为正整数,1≤a≤k且为正整数;
若所述输入数据的比特长度为k*m比特,则按照从所述输入数据的从低位到高位的顺序,将所述输入数据分为m个特定比特位宽k的长度的片段数据,并根据所述m个特定比特位宽k的长度的片段数据,在所述查找表中进行m次查找,其中,m≥2且为正整数。
6.根据权利要求5所述的方法,其中,所述方法还包括:若a>1,则利用所述输入数据的高a比特数据,在所述查找表中进行1次查找;
所述根据所述多次查找的结果,确定布尔掩码后的输出数据,包括:
根据所述n次查找的结果和所述1次查找的结果,确定所述布尔掩码后的输出数据。
7.根据权利要求6所述的方法,其中,所述根据所述n次查找的结果和所述1次查找的结果,确定所述布尔掩码后的输出数据,包括:
根据所述n次查找的结果中的每次结果的低k位数据、以及所述1次查找的结果的低a位数据,按照从低位到高位的顺序进行依次拼接,以得到比特长度为k*n+a比特的拼接结果;
根据所述k*n+a比特的拼接结果,确定所述布尔掩码后的输出数据。
8.根据权利要求5所述的方法,其中,所述方法还包括:若a=1,则利用所述输入数据的高a比特数据与第一随机数的低a位进行异或逻辑运算,其中,所述第一随机数为k比特长度的随机整数;
所述根据所述多次查找的结果,确定布尔掩码后的输出数据,包括:
根据所述n次查找的结果和所述异或逻辑运算的结果,确定所述布尔掩码后的输出数据。
9.根据权利要求6所述的方法,其中,所述根据所述n次查找的结果和所述异或逻辑运算的结果,确定所述布尔掩码后的输出数据,包括:
根据所述n次查找的结果中的每次结果的低k位数据、以及所述异或逻辑运算的结果,按照从低位到高位的顺序进行依次拼接,以得到比特长度为k*n+a比特的拼接结果;
根据所述k*n+a比特的拼接结果,确定所述布尔掩码后的输出数据。
10.根据权利要求1-3中任一项所述的方法,其中,所述输入数据为4字节数据,比特长度共32比特;或者,所述输入数据为8字节数据,比特长度共64比特。
11.根据权利要求1-3中任一项所述的方法,其中,所述查找表通过如下方法获得:
根据第一随机数和第二随机数,确定特定比特位宽k位的查表空间[0,2k-1]内的每个第一数值所对应的布尔掩码值,根据各个第一数值及其对应的布尔掩码值,生成布尔掩码表,其中,所述第一随机数为k比特长度的随机整数,第二随机数为1比特长度的随机整数;
根据所述第二随机数和第三随机数生成进位表,其中,所述第三随机数的比特长度基于输入数据的比特长度和所述特定比特位宽k进行设定;
基于所述布尔掩码表和所述进位表,确定所述查找表。
12.一种数据处理装置,应用于算术掩码到布尔掩码转换,所述装置包括:
查找单元,用于将输入数据分为特定比特位宽k的长度在查找表中进行多次查找,其中,所述特定比特位宽k的设定满足对应的查找目标存储在所述查找表中时占一个预定的最小数据存储单元;
确定单元,用于根据所述多次查找的结果,确定布尔掩码后的输出数据。
13.一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行权利要求1-11中任一项所述的方法。
14.一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如权利要求1-11中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410038815.2A CN117763205A (zh) | 2024-01-10 | 2024-01-10 | 数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410038815.2A CN117763205A (zh) | 2024-01-10 | 2024-01-10 | 数据处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117763205A true CN117763205A (zh) | 2024-03-26 |
Family
ID=90320001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410038815.2A Pending CN117763205A (zh) | 2024-01-10 | 2024-01-10 | 数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117763205A (zh) |
-
2024
- 2024-01-10 CN CN202410038815.2A patent/CN117763205A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11159305B2 (en) | Homomorphic data decryption method and apparatus for implementing privacy protection | |
JP4659149B2 (ja) | 電子チップの不正行為に対する保護の非対称暗号通信法 | |
US10915667B2 (en) | Protecting parallel multiplication operations from external monitoring attacks | |
US9898623B2 (en) | Method for performing an encryption with look-up tables, and corresponding encryption apparatus and computer program product | |
US8428252B1 (en) | Using multiples above two with running totals in elliptic curve cryptography scalar multiplication acceleration tables | |
CN107004084B (zh) | 用于加密操作的乘法掩码 | |
CN112202547B (zh) | 一种轻量级分组密码gfcs实现方法、装置及可读存储介质 | |
US20120047417A1 (en) | Operation unit and program | |
US20200097256A1 (en) | A calculation device for encoded addition | |
JP2019535036A (ja) | 認証命令を含む暗号メッセージを実現するコンピュータ・プログラム製品、コンピュータ・システム、およびコンピュータ実装方法 | |
US20210152331A1 (en) | Protecting polynomial hash functions from external monitoring attacks | |
CN105897402A (zh) | 参数加密方法、装置 | |
Seo | Compact implementations of Curve Ed448 on low‐end IoT platforms | |
US20070058800A1 (en) | Transition between masked representations of a value during cryptographic calculations | |
CN114124359A (zh) | 保留格式加密数据的方法、装置、电子设备及存储介质 | |
CN114095149A (zh) | 信息加密方法、装置、设备及存储介质 | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
CN114338049B (zh) | 基于模归约的国密算法sm2的快速实现方法及系统 | |
CN117763205A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN114826560B (zh) | 一种轻量级分组密码cref实现方法及系统 | |
WO2023000577A1 (zh) | 一种数据压缩方法、装置及电子设备和存储介质 | |
US11070358B2 (en) | Computation device and method | |
CN110505051B (zh) | 字符串哈希处理方法及装置 | |
Seo | Compact software implementation of public-key cryptography on MSP430X | |
JP2004004784A (ja) | ハッシュ・アルゴリズムを実装するためのシステム及び方法 |
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 |