CN109375895B - 多项式乘法的加速方法及装置、ntru加解密加速方法及装置 - Google Patents
多项式乘法的加速方法及装置、ntru加解密加速方法及装置 Download PDFInfo
- Publication number
- CN109375895B CN109375895B CN201811209287.3A CN201811209287A CN109375895B CN 109375895 B CN109375895 B CN 109375895B CN 201811209287 A CN201811209287 A CN 201811209287A CN 109375895 B CN109375895 B CN 109375895B
- Authority
- CN
- China
- Prior art keywords
- polynomial
- multiplication
- multipliers
- adder
- input
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000001133 acceleration Effects 0.000 claims abstract description 34
- 230000008569 process Effects 0.000 claims abstract description 19
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 16
- 238000004590 computer program Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明属于计算机技术领域,具体涉及一种多项式乘法的加速方法及装置、NTRU加解密加速方法及装置,该多项式乘法的加速方法包括:设置多个乘法器,通过多个乘法器生成乘法结果并输入该乘法结果至同一加法器中,每当加法器根据多个乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN‑1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供加法器生成下一加法结果,并直至加法器生成N个加法结果为止。本发明能够提升多项式乘法的运算速度,从而提升NTRU加解密过程的效率。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种多项式乘法的加速方法及装置、NTRU加解密加速方法及装置。
背景技术
NTRU(Number Theory Research Unit)算法是一种基于环的公开密钥体制,其在安全性和速度方面具有较大的优势。NTRU算法的加解密过程需进行大量的多项式乘法运算,但现有的多项式乘法运算方式均为串行计算模式,多项式乘法运算的运算速度较慢导致运算过程的耗时较大,进而导致NTRU加解密过程的效率较低。
应该注意,上面对技术背景的介绍只是为了方便对本发明的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本发明的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。
发明内容
本发明所要解决的技术问题是针对现有技术中上述不足,提供一种多项式乘法的加速方法及装置、NTRU加解密加速方法及装置,能够提升多项式乘法的运算速度,从而提升NTRU加解密过程的效率。
为实现上述目的,本发明提供了一种多项式乘法的加速方法,包括:
设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中;
将与第一多项式A对应的数组a=[a0,a1,a2…aN‐1]中的各元素按照a0,a1…aN-1的顺序依次排列后分别输入至对应乘法器的第一输入端;
将与第二多项式B对应的数组b=[b0,b1,b2…bN‐1]中的各元素按照b0,bN-1,bN-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端;
通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果;
每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成N个加法结果为止。
可选地,还包括:
通过所述加法器生成的N个加法结果生成第一多项式与第二多项式的相乘多项式。
可选地,所述乘法器的数量为N个,所述N个乘法器的编号分别为M0,M1…MN-1,所述加法器生成的N个加法结果分别为c0,c1,c2…cN‐1;
当数组a中的元素a0,a1…aN-1依次分别输入至乘法器M0,M1…MN-1的第一输入端且数组b中的元素b0,bN-1,bN-2…b2,b1依次分别输入至乘法器M0,M1…MN-1的第二输入端时,所述加法器根据N个所述乘法器的乘法结果生成的加法结果为c0;
当数组a中的元素a0,a1…aN-1依次分别输入至乘法器M0,M1…MN-1的第一输入端且数组b中的元素bN-1,bN-2…b2,b1,b0依次分别输入至乘法器M0,M1…MN-1的第二输入端时,所述加法器根据N个所述乘法器的乘法结果生成的加法结果为cN‐1。
可选地,所述第一多项式A=[a0+a1x1+a2x2+…+aN‐1xN‐1],所述第二多项式B=[b0+b1x1+b2x2+…+bN‐1xN‐1];
所述相乘多项式C=A*B=[c0+c1x1+c2x2+…+cN‐1xN‐1]。
可选地,所述加法器根据多个所述乘法器的乘法结果生成一个加法结果的时长记为一个乘法周期。所述加法器生成N个加法结果的时长包括N个乘法周期。
为实现上述目的,相应地,本发明还提供了一种多项式乘法的加速装置,包括:
设置模块,用于设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中;
第一顺序排列模块,用于将与第一多项式A对应的数组a=[a0,a1,a2…aN‐1]中的各元素按照a0,a1…aN-1的顺序依次排列后分别输入至对应乘法器的第一输入端;
第二顺序排列模块,用于将与第二多项式B对应的数组b=[b0,b1,b2…bN‐1]中的各元素按照b0,bN-1,bN-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端;
生成输入模块,用于通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果;
循环移位模块,用于每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成N个加法结果为止。
可选地,还包括:
生成模块,用于通过所述加法器生成的N个加法结果生成第一多项式与第二多项式的相乘多项式。
为实现上述目的,本发明还提供了一种NTRU加解密加速方法,所述NTRU加解密过程中的多项式乘法运算均通过如上所述的多项式乘法的加速方法实现。
可选地,所述乘法器的数量为N个,所述N为所述NTRU加解密过程中所涉及的多个多项式中项数最大的多项式的项数。
为实现上述目的,相应地,本发明还提供了一种NTRU加解密加速装置,包括如上所述的多项式乘法的加速装置。
本发明的有益效果是:本发明提供的多项式乘法的加速方法设置有多个乘法器,通过多个乘法器生成乘法结果并输入该乘法结果至同一加法器中,每当加法器根据多个乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供加法器生成下一加法结果,能够提升多项式乘法的运算速度,从而提升NTRU加解密过程的效率。
参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本发明的实施方式包括许多改变、修改和等同。
针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施例一提供的一种多项式乘法的加速方法的流程示意图;
图1b为本发明实施例一提供的一种多项式乘法的加速装置的结构示意图;
图2a为本发明实施例二提供的一种多项式乘法的加速方法的流程示意图;
图2b为本发明实施例二提供的一种多项式乘法的加速装置的结构示意图;
图3a和图3b为本发明实施例二提供的多项式乘法的逻辑结构示意图;
图4为现有技术中多项式乘法的逻辑结构示意图。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。
本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明公开的实施例可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
实施例一
图1a为本发明实施例一提供的一种多项式乘法的加速方法的流程示意图,图1b为本发明实施例一提供的一种多项式乘法的加速装置的结构示意图,如图1a所示,该多项式乘法的加速方法包括以下步骤:
步骤101、设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中。
步骤102、将与第一多项式A对应的数组a=[a0,a1,a2…aN‐1]中的各元素按照a0,a1…aN-1的顺序依次排列后分别输入至对应乘法器的第一输入端。
步骤103、将与第二多项式B对应的数组b=[b0,b1,b2…bN‐1]中的各元素按照b0,bN-1,bN-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端。
步骤104、通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果。
步骤105、每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成N个加法结果为止。
相应地,本实施例还提供了一种多项式乘法的加速装置,如图1b所示,该多项式乘法的加速装置包括:设置模块11、第一顺序排列模块12、第二顺序排列模块13、生成输入模块14和循环移位模块15。
设置模块11用于设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中。第一顺序排列模块12用于将与第一多项式A对应的数组a=[a0,a1,a2…aN‐1]中的各元素按照a0,a1…aN-1的顺序依次排列后分别输入至对应乘法器的第一输入端。第二顺序排列模块13用于将与第二多项式B对应的数组b=[b0,b1,b2…bN‐1]中的各元素按照b0,bN-1,bN-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端。生成输入模块14用于通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果。循环移位模块15用于每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成N个加法结果为止。
本实施例提供的多项式乘法的加速方法及装置,设置有多个乘法器,通过多个乘法器生成乘法结果并输入该乘法结果至同一加法器中,每当加法器根据多个乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供加法器生成下一加法结果,能够提升多项式乘法的运算速度,从而提升NTRU加解密过程的效率。
实施例二
图2a为本发明实施例二提供的一种多项式乘法的加速方法的流程示意图,图2b为本发明实施例二提供的一种多项式乘法的加速装置的结构示意图,如图2a所示,该多项式乘法的加速方法包括以下步骤:
步骤201、设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中。
优选地,本实施例中的各步骤由多项式乘法的加速装置执行。
本实施例中,乘法器的数量为N个,N个乘法器的编号分别记为M0,M1…MN-1,N个乘法器按照编号依次排列。N个乘法器用于计算得出第一多项式A与第二多项式B的相乘多项式C=A*B,其中第一多项式A和第二多项式B中项数最大者的项数为N,相乘多项式C的项数为第一多项式A和第二多项式B中项数最小者的项数。优选地,第一多项式A和第二多项式B的项数均为N项,相乘多项式C的项数也为N项。
步骤202、将与第一多项式A对应的数组a=[a0,a1,a2…aN‐1]中的各元素按照a0,a1…aN-1的顺序依次排列后分别输入至对应乘法器的第一输入端。
第一多项式A=[a0+a1x1+a2x2+…+aN‐1xN‐1],与第一多项式A对应的数组a=[a0,a1,a2…aN‐1]包括第一多项式A中各元素的系数。
步骤203、将与第二多项式B对应的数组b=[b0,b1,b2…bN‐1]中的各元素按照b0,bN-1,bN-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端。
第二多项式B=[b0+b1x1+b2x2+…+bN‐1xN‐1],与第二多项式B对应的数组b=[b0,b1,b2…bN‐1]包括第二多项式B中各元素的系数。
步骤204、通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果。
本实施例中,每个乘法器包括两个输入端:第一输入端和第二输入端。乘法器用于根据第一输入端和第二输入端输入的元素生成乘法结果,乘法器还包括乘法器输出端,乘法器输出端用于输出乘法结果。乘法器的输出端与加法器的输入端相连,以使得乘法结果输入至加法器中。加法器包括多个加法器输入端,加法器用于根据多个加法器输入端输入的乘法结果生成加法结果。加法器还包括加法器输出端,加法器输出端用于输出加法结果,加法结果为相乘多项式C中各元素的系数。
本实施例中,当多个乘法器的第一输入端和第二输入端均输入元素时,多个乘法器并行生成乘法结果并输出至加法器中,能够实现多项式乘法中各项系数的并行相乘及累加。
步骤205、每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成N个加法结果为止。
图3a和图3b为本发明实施例二提供的多项式乘法的逻辑结构示意图,如图3a和图3b所示,N个乘法器根据依次输入的数组a和数组b生成分别与N个乘法器M0,M1…MN-1对应的N个乘法结果,N个乘法结果均输入至同一加法器中,该加法器每次根据N个乘法结果生成一个加法结果。当数组a中的各元素一直以a0,a1…aN-1的顺序输入对应的乘法器M0,M1…MN-1的第一输入端时,数组b中的各元素后向循环排列顺序多次并在每次变换排列顺序后输入至对应的乘法器M0,M1…MN-1的第二输入端,加法器在数组b中的各元素每次变换排列顺序后即生成下一加法结果,经过N-1次顺序变换后加法器共生成N个加法结果,加法器生成的N个加法结果分别为c0,c1,c2…cN‐1。
当数组a中的元素a0,a1…aN-1依次分别输入至乘法器M0,M1…MN-1的第一输入端且数组b中的元素b0,bN-1,bN-2…b2,b1依次分别输入至乘法器M0,M1…MN-1的第二输入端时,所述加法器根据N个所述乘法器的乘法结果生成的加法结果为c0。当数组a中的元素a0,a1…aN-1依次分别输入至乘法器M0,M1…MN-1的第一输入端且数组b中的元素bN-1,bN-2…b2,b1,b0依次分别输入至乘法器M0,M1…MN-1的第二输入端时,所述加法器根据N个所述乘法器的乘法结果生成的加法结果为cN‐1。
步骤206、通过所述加法器生成的N个加法结果生成第一多项式与第二多项式的相乘多项式。
加法器生成的N个加法结果分别为c0,c1,c2…cN‐1即为相乘多项式C中各元素的系数。
根据加法器生成的N个加法结果生成第一多项式A=[a0+a1x1+a2x2+…+aN‐1xN‐1]与第二多项式B=[b0+b1x1+b2x2+…+bN‐1xN‐1]的相乘多项式C=A*B=[c0+c1x1+c2x2+…+cN‐1xN ‐1]。
值得说明的是,本实施例中,加法器根据多个所述乘法器的乘法结果生成一个加法结果的时长记为一个乘法周期T,则加法器生成N个加法结果的时长包括N个乘法周期T,即完成一次N项多项式乘法的耗时为N*T。
图4为现有技术中多项式乘法的逻辑结构示意图,如图4所示,在现有技术中,若要计算出第一多项式A=[a0+a1x1+a2x2+…+aN‐1xN‐1]与第二多项式B=[b0+b1x1+b2x2+…+bN‐1xN ‐1]的相乘多项式C=A*B=[c0+c1x1+c2x2+…+cN‐1xN‐1],则需一一计算C中各元素的系数ck=a0bk+a1bk‐1+a2bk‐2+…+akb0+ak+1bN‐1+ak+2bN‐2+…+aN‐1bk+1,即需要进行N次乘法计算,由于C中含有N个元素,完成一次N项多项式乘法的耗时为N2*T。现有技术采用串行计算的模式实现多项式相乘运算。本实施例设置有多个乘法器,通过移位变换第二多项式中各项系数的输入方式的方式改进了多项式环乘积计算模式,实现多项式乘法中每级系数并行相乘并累加,加法器生成N个加法结果的时长仅需N个乘法周期T,本实施例完成一次N次多项式乘法的耗时N*T远小于现有技术中完成一次N次多项式乘法的耗时N2*T。本实施例的多项式乘法的加速方法能够显著提升多项式乘法的运算速度,当将该多项式乘法的加速方法应用于NTRU加解密过程时,能够进而提升NTRU加解密过程的效率。
相应地,本实施例还提供了一种多项式乘法的加速装置,如图2b所示,该多项式乘法的加速装置包括:设置模块11、第一顺序排列模块12、第二顺序排列模块13、生成输入模块14和循环移位模块15。
设置模块11用于设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中。第一顺序排列模块12用于将与第一多项式A对应的数组a=[a0,a1,a2…aN‐1]中的各元素按照a0,a1…aN-1的顺序依次排列后分别输入至对应乘法器的第一输入端。第二顺序排列模块13用于将与第二多项式B对应的数组b=[b0,b1,b2…bN‐1]中的各元素按照b0,bN-1,bN-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端。生成输入模块14用于通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果。循环移位模块15用于每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成N个加法结果为止。
进一步地,该多项式乘法的加速装置还包括生成模块16。生成模块16用于通过所述加法器生成的N个加法结果生成第一多项式与第二多项式的相乘多项式。
本实施例提供的多项式乘法的加速方法及装置,设置有多个乘法器,通过移位变换的方式改进多项式环乘积计算模式,实现每级系数并行相乘并累加,其完成一次N次多项式乘法的耗时N*T远小于现有技术中完成一次N次多项式乘法的耗时N2*T,能够提升多项式乘法的运算速度。当将该多项式乘法的加速方法应用于NTRU加解密过程时,能够进而提升NTRU加解密过程的效率。
应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
实施例三
本发明实施例三提供了一种NTRU加解密加速方法,该NTRU加解密加速方法包括:所述NTRU加解密过程中的多项式乘法运算均通过实施例一或实施例二提供的多项式乘法的加速方法实现。
进一步地,乘法器的数量为N个,所述N为所述NTRU加解密过程中所涉及的多个多项式中项数最大的多项式的项数。
NTRU加解密过程中会涉及到多次多项式相乘运算,每次多项式相乘运算涉及到的多项式的最高项数各不相同,乘法器的数量N为其中所涉及到的项数最高的多项式的项数。
相应地,本发明实施例三还提供了一种NTRU加解密加速装置,包括实施例一或实施例二提供的多项式乘法的加速装置。
本实施例提供的NTRU加解密加速方法及装置,能够在提升多项式乘法的运算速度的基础上,实现NTRU加解密过程的效率提升。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种多项式乘法的加速方法,其特征在于,包括:
设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中;
将与第一多项式A对应的数组a=[a0,a1,a2…aN-1]中的各元素按照a0,a1…aN-1的顺序依次排列后分别输入至对应乘法器的第一输入端;其中,所述第一多项式A对应的数组a包含两个以上的元素;
将与第二多项式B对应的数组b=[b0,b1,b2…bN-1]中的各元素按照b0,bN-1,bN-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端;其中,所述第二多项式B对应的数组b包含两个以上的元素;
通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果;
每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN-1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成N个加法结果为止。
2.根据权利要求1所述的多项式乘法的加速方法,其特征在于,还包括:
通过所述加法器生成的N个加法结果生成第一多项式与第二多项式的相乘多项式。
3.根据权利要求2所述的多项式乘法的加速方法,其特征在于,所述乘法器的数量为N个,所述N个乘法器的编号分别为M0,M1…MN-1,所述加法器生成的N个加法结果分别为c0,c1,c2…cN-1;
当数组a中的元素a0,a1…aN-1依次分别输入至乘法器M0,M1…MN-1的第一输入端且数组b中的元素b0,bN-1,bN-2…b2,b1依次分别输入至乘法器M0,M1…MN-1的第二输入端时,所述加法器根据N个所述乘法器的乘法结果生成的加法结果为c0;
当数组a中的元素a0,a1…aN-1依次分别输入至乘法器M0,M1…MN-1的第一输入端且数组b中的元素bN-1,bN-2…b2,b1,b0依次分别输入至乘法器M0,M1…MN-1的第二输入端时,所述加法器根据N个所述乘法器的乘法结果生成的加法结果为cN-1。
4.根据权利要求3所述的多项式乘法的加速方法,其特征在于,所述第一多项式A=[a0+a1x1+a2x2+…+aN-1xN-1],所述第二多项式B=[b0+b1x1+b2x2+…+bN-1xN-1];
所述相乘多项式C=A*B=[c0+c1x1+c2x2+…+cN-1xN-1]。
5.根据权利要求1所述的多项式乘法的加速方法,其特征在于,所述加法器根据多个所述乘法器的乘法结果生成一个加法结果的时长记为一个乘法周期;所述加法器生成N个加法结果的时长包括N个乘法周期。
6.一种多项式乘法的加速装置,其特征在于,包括:
设置模块,用于设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中;
第一顺序排列模块,用于将与第一多项式A对应的数组a=[a0,a1,a2…aN-1]中的各元素按照a0,a1…aN-1的顺序依次排列后分别输入至对应乘法器的第一输入端;其中,所述第一多项式A对应的数组a包含至少两个以上的元素;
第二顺序排列模块,用于将与第二多项式B对应的数组b=[b0,b1,b2…bN-1]中的各元素按照b0,bN-1,bN-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端;其中,所述第二多项式B对应的数组b包含至少两个以上的元素;
生成输入模块,用于通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果;
循环移位模块,用于每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bN-1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成N个加法结果为止。
7.根据权利要求6所述的多项式乘法的加速装置,其特征在于,还包括:
生成模块,用于通过所述加法器生成的N个加法结果生成第一多项式与第二多项式的相乘多项式。
8.一种NTRU加解密加速方法,其特征在于,所述NTRU加解密过程中的多项式乘法运算均通过如权利要求1-5任一所述的多项式乘法的加速方法实现。
9.根据权利要求8所述的NTRU加解密加速方法,其特征在于,所述乘法器的数量为N个,所述N为所述NTRU加解密过程中所涉及的多个多项式中项数最大的多项式的项数。
10.一种NTRU加解密加速装置,其特征在于,包括如权利要求6或7所述的多项式乘法的加速装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811209287.3A CN109375895B (zh) | 2018-10-17 | 2018-10-17 | 多项式乘法的加速方法及装置、ntru加解密加速方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811209287.3A CN109375895B (zh) | 2018-10-17 | 2018-10-17 | 多项式乘法的加速方法及装置、ntru加解密加速方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109375895A CN109375895A (zh) | 2019-02-22 |
CN109375895B true CN109375895B (zh) | 2021-10-15 |
Family
ID=65400622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811209287.3A Active CN109375895B (zh) | 2018-10-17 | 2018-10-17 | 多项式乘法的加速方法及装置、ntru加解密加速方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109375895B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116192359B (zh) * | 2022-12-27 | 2024-01-05 | 北京瑞莱智慧科技有限公司 | 一种同态乘法阵列电路和数据处理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339217A (zh) * | 2010-07-27 | 2012-02-01 | 中兴通讯股份有限公司 | 一种浮点数乘加器融合处理装置及方法 |
CN102681814A (zh) * | 2010-12-27 | 2012-09-19 | 英特尔移动通信有限公司 | 系数推进乘法累积单元 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2537371B (en) * | 2015-04-13 | 2019-10-02 | Imagination Tech Ltd | Modulo calculation using polynomials |
-
2018
- 2018-10-17 CN CN201811209287.3A patent/CN109375895B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339217A (zh) * | 2010-07-27 | 2012-02-01 | 中兴通讯股份有限公司 | 一种浮点数乘加器融合处理装置及方法 |
CN102681814A (zh) * | 2010-12-27 | 2012-09-19 | 英特尔移动通信有限公司 | 系数推进乘法累积单元 |
Non-Patent Citations (1)
Title |
---|
NTRU公开密钥体制算法分析与实现;步山岳;《计算机工程》;20020630;第112页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109375895A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7921145B2 (en) | Extending a repetition period of a random sequence | |
US7962540B2 (en) | Mixed radix number generator with chosen statistical artifacts | |
US8856492B2 (en) | Method for vector processing | |
Wang et al. | FPGA implementation of a large-number multiplier for fully homomorphic encryption | |
KR101027855B1 (ko) | Crc 에러 검출 방법, 장치, 시스템 및 crc 에러 검출방법을 수행하는인스트럭션 세트를 포함하는 머신판독가능한 매체 | |
CN114063973B (zh) | 伽罗华域乘法器及纠删编解码系统 | |
CN115344237A (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
JP2004326112A (ja) | マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ | |
WO2012016588A1 (en) | Bit sequence generator | |
CN113541921A (zh) | 一种全同态加密gpu高性能实现方法 | |
JP2002229445A (ja) | べき乗剰余演算器 | |
CN109375895B (zh) | 多项式乘法的加速方法及装置、ntru加解密加速方法及装置 | |
CN117692126A (zh) | 一种基于低复杂度模乘算法的Paillier同态加密方法及系统 | |
US8909510B2 (en) | LFSR emulation | |
KR20050065976A (ko) | Sha-1 해쉬값 연산 장치 및 방법 | |
CN110232289A (zh) | 椭圆曲线密码的高速倍点运算方法 | |
CN113485751B (zh) | 执行伽罗瓦域乘法的方法、运算单元和电子装置 | |
CN115202616A (zh) | 模乘器、安全芯片、电子设备及加密方法 | |
Neda et al. | CiFlow: Dataflow analysis and optimization of key switching for homomorphic encryption | |
KR100954843B1 (ko) | 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체 | |
CN116820394B (zh) | 一种面向椭圆曲线加密算法的标量乘电路 | |
Chi et al. | VACA: A high-performance variable-length adaptive CRC algorithm | |
CN115664849B (zh) | Bmc及其加密数据生成系统、方法、设备及存储介质 | |
US10503477B2 (en) | Galois field pipelined multiplier with polynomial and beta input passing scheme | |
RU2726266C1 (ru) | Способ работы регистра сдвига с линейной обратной связью |
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 |