本發(fā)明涉及一種有限域乘法器,尤其涉及一種基于二叉樹結(jié)構(gòu)的有限域乘法器。
背景技術(shù):
有限域,又稱伽羅瓦域,是含有有限個(gè)元素的數(shù)域,被廣泛地運(yùn)用于通訊、安全、存儲(chǔ)等領(lǐng)域;有限域上的運(yùn)算被稱為有限域計(jì)算,大致包括有限域加法、乘法、求逆和除法等。
其中,有限域乘法是使用最多、最復(fù)雜的有限域計(jì)算之一。有限域乘法是信息安全、通訊領(lǐng)域的基礎(chǔ),在密碼系統(tǒng)和編碼技術(shù)中起了重要作用;有限域乘法的設(shè)計(jì)方法一般基于代數(shù)方法,即使用代數(shù)理論進(jìn)行乘法運(yùn)算,而利用代數(shù)方法進(jìn)行乘法運(yùn)算的設(shè)計(jì)非常少?,F(xiàn)有技術(shù)中存在的多種公知的有限域的乘法器,包括軟件乘法器和硬件乘法器,均存在著不足之處,例如速度、面積和功耗等性能指標(biāo)達(dá)不到要求,因此,需要設(shè)計(jì)特定的裝置來實(shí)現(xiàn)有限域的乘法運(yùn)算。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是需要提供一種結(jié)構(gòu)簡(jiǎn)單且速度快的基于二叉樹結(jié)構(gòu)的有限域乘法器。
對(duì)此,本發(fā)明提供一種基于二叉樹結(jié)構(gòu)的有限域乘法器,包括:
輸入端口,用于輸入有限域GF(2n)的運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x);
輸出端口,用于輸出運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x)的乘法結(jié)果c(x);
以及,二叉樹結(jié)構(gòu),用于執(zhí)行運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x)的GF(2n)乘法運(yùn)算;
其中,二叉樹結(jié)構(gòu)包括n+1層,從上至下,第一層至第n層包括左二叉樹和右二叉樹,最下面一層為第n+1層;第n+1層的每個(gè)節(jié)點(diǎn)與第n層的三個(gè)節(jié)點(diǎn)相連。
本發(fā)明的進(jìn)一步改進(jìn)在于,所述左二叉樹和右二叉樹中,左根節(jié)點(diǎn)和左孩子節(jié)點(diǎn)代表數(shù)值0,右根節(jié)點(diǎn)和右孩子節(jié)點(diǎn)代表數(shù)值1;所述左二叉樹和右二叉樹中,除葉子節(jié)點(diǎn)外的每一個(gè)節(jié)點(diǎn)均與下一層的兩個(gè)孩子節(jié)點(diǎn)相連,所述下一層的兩個(gè)孩子節(jié)點(diǎn)中,左邊的節(jié)點(diǎn)為左孩子節(jié)點(diǎn),右邊的節(jié)點(diǎn)為右孩子節(jié)點(diǎn)。
本發(fā)明的進(jìn)一步改進(jìn)在于,二叉樹結(jié)構(gòu)的第一層至第n層中,從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)的每條路徑代表有限域GF(2n)的一個(gè)元素。
本發(fā)明的進(jìn)一步改進(jìn)在于,在二叉樹結(jié)構(gòu)中,第n+1層的每個(gè)節(jié)點(diǎn)代表兩個(gè)有限域元素的乘法結(jié)果。
本發(fā)明的進(jìn)一步改進(jìn)在于,在二叉樹結(jié)構(gòu)中,第n層的每?jī)蓚€(gè)節(jié)點(diǎn)與第n+1層的一個(gè)節(jié)點(diǎn)相連;若從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)ni的一條路徑代表有限域GF(2n)的元素i,從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)nj的一條路徑代表有限域GF(2n)的元素j,第n+1層的節(jié)點(diǎn)nk代表GF(2n)的乘法運(yùn)算i×j的結(jié)果,那么第n層的節(jié)點(diǎn)ni和節(jié)點(diǎn)nj分別與第n+1層的節(jié)點(diǎn)nk相連。
本發(fā)明的進(jìn)一步改進(jìn)在于,在二叉樹結(jié)構(gòu)中,若從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)nt的一條路徑代表有限域GF(2n)的元素t,當(dāng)?shù)趎+1層的節(jié)點(diǎn)nk代表的兩個(gè)有限域元素的乘法結(jié)果是t時(shí),第n+1層的節(jié)點(diǎn)nk與第n層的節(jié)點(diǎn)nt相連。
本發(fā)明的進(jìn)一步改進(jìn)在于,所述二叉樹結(jié)構(gòu)包括樹節(jié)點(diǎn)和樹節(jié)點(diǎn)之間的連線。
本發(fā)明的進(jìn)一步改進(jìn)在于,運(yùn)算數(shù)a(x)的表現(xiàn)形式為a(x)=an-1xn-1+an-2xn-2+...+a0;運(yùn)算數(shù)b(x)的表現(xiàn)形式為b(x)=bn-1xn-1+bn-2xn-2+...+b0;其中,an-1,an-2,...,a0,bn-1,bn-2,...,b0均是GF(2)的元素。
本發(fā)明的進(jìn)一步改進(jìn)在于,乘法結(jié)果c(x)的表現(xiàn)形式為c(x)=cn-1xn-1+cn-2xn-2+...+c0,其中,cn-1,cn-2,...,c0均是均是GF(2)的元素。
本發(fā)明的進(jìn)一步改進(jìn)在于,在所述二叉樹結(jié)構(gòu)的第一層至第n層中,運(yùn)算數(shù)a(x)的ai輸入至第i+1層;從第一層開始,若a0的數(shù)值為0則左二叉樹的左根節(jié)點(diǎn)被選中,若a0的數(shù)值為1則右二叉樹的右根節(jié)點(diǎn)被選中,只有被選中的節(jié)點(diǎn)所包含的子樹被下一層使用;在被選中的節(jié)點(diǎn)的左孩子節(jié)點(diǎn)和右孩子節(jié)點(diǎn)中,若a1的數(shù)值為0則左孩子節(jié)點(diǎn)被選中,若a1的數(shù)值為1則右孩子節(jié)點(diǎn)被選中,只有被選中的節(jié)點(diǎn)所包含的子樹被下一層使用;以下所有層直到第n層均依據(jù)此方法選擇節(jié)點(diǎn),從第一層至第n層所有被選中的節(jié)點(diǎn)代表運(yùn)算數(shù)a(x)。
本發(fā)明的進(jìn)一步改進(jìn)在于,在所述二叉樹結(jié)構(gòu)的第一層至第n層中,運(yùn)算數(shù)b(x)的bi輸入至第i+1層;從第一層開始,若b0的數(shù)值為0則左二叉樹的左根節(jié)點(diǎn)被選中,若b0的數(shù)值為1則右二叉樹的右根節(jié)點(diǎn)被選中,只有被選中的節(jié)點(diǎn)所包含的子樹被下一層使用;在被選中的節(jié)點(diǎn)的左孩子節(jié)點(diǎn)和右孩子節(jié)點(diǎn)中,若b1的數(shù)值為0則左孩子節(jié)點(diǎn)被選中,若b1的數(shù)值為1則右孩子節(jié)點(diǎn)被選中,只有被選中的節(jié)點(diǎn)所包含的子樹被下一層使用;以下所有層直到第n層均依據(jù)此方法選擇節(jié)點(diǎn),從第一層至第n層所有被選中的節(jié)點(diǎn)代表運(yùn)算數(shù)b(x)
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:通過二叉樹的結(jié)構(gòu)實(shí)現(xiàn)了有限域的乘法運(yùn)算,結(jié)構(gòu)簡(jiǎn)單,且在計(jì)算GF(2n)的乘法運(yùn)算中相對(duì)于現(xiàn)有的有限域乘法器有著明顯的速度優(yōu)勢(shì),可以廣泛運(yùn)用于各種工程領(lǐng)域。
附圖說明
圖1是本發(fā)明一種實(shí)施例的結(jié)構(gòu)示意圖;
圖2是本發(fā)明一種實(shí)施例的二叉樹結(jié)構(gòu)的結(jié)構(gòu)示意圖;
圖3為本發(fā)明一種實(shí)施例的用于計(jì)算有限域乘法的原理結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖,對(duì)本發(fā)明的較優(yōu)的實(shí)施例作進(jìn)一步的詳細(xì)說明。
如圖1和圖2所示,本例提供一種基于二叉樹結(jié)構(gòu)的有限域乘法器,包括:
輸入端口,用于輸入有限域GF(2n)的運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x);
輸出端口,用于輸出運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x)的乘法結(jié)果c(x);
以及,二叉樹結(jié)構(gòu),用于執(zhí)行運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x)的GF(2n)乘法運(yùn)算;
其中,二叉樹結(jié)構(gòu)包括n+1層,從上至下,第一層至第n層包括左二叉樹和右二叉樹,最下面一層為第n+1層;第n+1層的每個(gè)節(jié)點(diǎn)與第n層的三個(gè)特定的節(jié)點(diǎn)相連。
本例所述左二叉樹和右二叉樹中,左根節(jié)點(diǎn)和左孩子節(jié)點(diǎn)代表數(shù)值0,右根節(jié)點(diǎn)和右孩子節(jié)點(diǎn)代表數(shù)值1;所述左二叉樹和右二叉樹中,除葉子節(jié)點(diǎn)外的每一個(gè)節(jié)點(diǎn)均與下一層的兩個(gè)孩子節(jié)點(diǎn)相連,所述下一層的兩個(gè)孩子節(jié)點(diǎn)中,左邊的節(jié)點(diǎn)為左孩子節(jié)點(diǎn),右邊的節(jié)點(diǎn)為右孩子節(jié)點(diǎn)。
本例所述二叉樹結(jié)構(gòu)中,除葉子節(jié)點(diǎn)外的每一個(gè)節(jié)點(diǎn)均與下一層的兩個(gè)孩子節(jié)點(diǎn)相連,所述下一層的兩個(gè)孩子節(jié)點(diǎn)中,左邊的節(jié)點(diǎn)為左孩子節(jié)點(diǎn),右邊的節(jié)點(diǎn)為右孩子節(jié)點(diǎn)。所述除葉子節(jié)點(diǎn)外的每一個(gè)節(jié)點(diǎn)為除第n層的葉子節(jié)點(diǎn)之外的樹節(jié)點(diǎn),所述樹節(jié)點(diǎn)簡(jiǎn)稱節(jié)點(diǎn);本例所述二叉樹結(jié)構(gòu)包括樹節(jié)點(diǎn)和樹節(jié)點(diǎn)之間的連線。
本例所述二叉樹結(jié)構(gòu)的第一層至第n層中,從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)的每條路徑代表有限域GF(2n)的一個(gè)元素。在二叉樹結(jié)構(gòu)中,第n+1層的每個(gè)節(jié)點(diǎn)代表兩個(gè)有限域元素的乘法結(jié)果。
本例在二叉樹結(jié)構(gòu)中,第n層的每?jī)蓚€(gè)節(jié)點(diǎn)與第n+1層的一個(gè)節(jié)點(diǎn)相連;若從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)ni的一條路徑代表有限域GF(2n)的元素i,從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)nj的一條路徑代表有限域GF(2n)的元素j,第n+1層的節(jié)點(diǎn)nk代表GF(2n)的乘法運(yùn)算i×j的結(jié)果,那么第n層的節(jié)點(diǎn)ni和節(jié)點(diǎn)nj分別與第n+1層的節(jié)點(diǎn)nk相連。若從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)nt的一條路徑代表有限域GF(2n)的元素t,當(dāng)?shù)趎+1層的節(jié)點(diǎn)nk代表的兩個(gè)有限域元素的乘法結(jié)果是t時(shí),第n+1層的節(jié)點(diǎn)nk與第n層的節(jié)點(diǎn)nt相連。
即,在所述二叉樹結(jié)構(gòu)的第一層至第n層中,運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x)所在的兩條路徑通過查找方法找到,兩條路徑包含的兩個(gè)第n層節(jié)點(diǎn)(如節(jié)點(diǎn)ni和節(jié)點(diǎn)nj)與第n+1層的一個(gè)節(jié)點(diǎn)(如節(jié)點(diǎn)nk)相連,而這個(gè)第n+1層的節(jié)點(diǎn)(如節(jié)點(diǎn)nk)與一個(gè)第n層節(jié)點(diǎn)(如節(jié)點(diǎn)nt),則從第一層的節(jié)點(diǎn)至這個(gè)第n層節(jié)點(diǎn)(如節(jié)點(diǎn)nt)代表的運(yùn)算數(shù)c(x)是運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x)的乘法結(jié)果。
在本例所述二叉樹結(jié)構(gòu)中,第n層的每?jī)蓚€(gè)節(jié)點(diǎn)與第n+1層的一個(gè)節(jié)點(diǎn)相連;在兩顆二叉樹中,從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)的每條路徑代表有限域GF(2n)的一個(gè)元素;若從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)ni的一條路徑代表有限域GF(2n)的元素i,從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)nj的一條路徑代表有限域GF(2n)的元素j,從第一層的節(jié)點(diǎn)到第n層的節(jié)點(diǎn)nt的一條路徑代表有限域GF(2n)的元素t,節(jié)點(diǎn)ni和節(jié)點(diǎn)nj與第n+1層的節(jié)點(diǎn)nk相連,當(dāng)GF(2n)的乘法運(yùn)算為i×j=t,第n+1層的節(jié)點(diǎn)nk與第n層的節(jié)點(diǎn)nt相連。
本例所述有限域GF(2n)簡(jiǎn)稱為GF(2n);運(yùn)算數(shù)a(x)的表現(xiàn)形式為a(x)=an-1xn-1+an-2xn-2+...+a0;運(yùn)算數(shù)b(x)的表現(xiàn)形式為b(x)=bn-1xn-1+bn-2xn-2+...+b0;其中,an-1,an-2,...,a0,bn-1,bn-2,...,b0均是GF(2)的元素;xn-1,xn-2,...,x1表示的是運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x)通過多項(xiàng)式來表示。而乘法結(jié)果c(x)的表現(xiàn)形式為c(x)=cn-1xn-1+cn-2xn-2+...+c0,其中,cn-1,cn-2,...,c0均是均是GF(2)的元素,表示通過多項(xiàng)式系數(shù)來表示GF(2n)的乘法運(yùn)算結(jié)果。所述GF(2)只包含0和1兩個(gè)元素。
如圖2所示,所述二叉樹結(jié)構(gòu)包括兩顆二叉樹以及第n+1層節(jié)點(diǎn),在第一層至第n層中,每一條從根節(jié)點(diǎn)到一個(gè)葉子節(jié)點(diǎn)的路徑分別代表一個(gè)GF(2n)的元素;在二叉樹結(jié)構(gòu)中,所述左葉子節(jié)點(diǎn)ni和右葉子節(jié)點(diǎn)nj與第n+1層的節(jié)點(diǎn)nk相連,且第n+1層的節(jié)點(diǎn)nk與葉子節(jié)點(diǎn)nt相連。
第n+1層節(jié)點(diǎn)包括多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)與第n層的葉子節(jié)點(diǎn)相連。第n+1層節(jié)點(diǎn)的連接規(guī)則是每?jī)蓚€(gè)第n層的葉子節(jié)點(diǎn)與一個(gè)第n+1層節(jié)點(diǎn)相連。例如,葉子節(jié)點(diǎn)ni和葉子節(jié)點(diǎn)nj與第n+1層的節(jié)點(diǎn)nk相連,假定從第一層的根節(jié)點(diǎn)到第n層的葉子節(jié)點(diǎn)ni的路徑代表GF(2n)的元素i,該元素i即有限域的元素、是一個(gè)數(shù)值,從第一層根節(jié)點(diǎn)到第n層的葉子節(jié)點(diǎn)nj的路徑代表GF(2n)的元素j。若GF(2n)的乘法有i×j=t,并且從第一層根節(jié)點(diǎn)到第n層的葉子節(jié)點(diǎn)nt的路徑代表GF(2n)的元素t,則第n+1層的節(jié)點(diǎn)nk與第n層的葉子節(jié)點(diǎn)nt相連,此時(shí),乘法結(jié)果c(x)為從第一層的根節(jié)點(diǎn)到第n層的葉子節(jié)點(diǎn)nt的路徑。
根據(jù)節(jié)點(diǎn)的類型,節(jié)點(diǎn)的內(nèi)部結(jié)構(gòu)有所不同。
本例在所述二叉樹結(jié)構(gòu)的第一層至第n層中,運(yùn)算數(shù)a(x)的ai輸入至第i+1層;從第一層開始,若a0的數(shù)值為0則左二叉樹的左根節(jié)點(diǎn)被選中,若a0的數(shù)值為1則右二叉樹的右根節(jié)點(diǎn)被選中,只有被選中的節(jié)點(diǎn)所包含的子樹被下一層使用;在被選中的節(jié)點(diǎn)的左孩子節(jié)點(diǎn)和右孩子節(jié)點(diǎn)中,若a1的數(shù)值為0則左孩子節(jié)點(diǎn)被選中,若a1的數(shù)值為1則右孩子節(jié)點(diǎn)被選中,只有被選中的節(jié)點(diǎn)所包含的子樹被下一層使用;以下所有層直到第n層均依據(jù)此方法選擇節(jié)點(diǎn),從第一層至第n層所有被選中的節(jié)點(diǎn)代表運(yùn)算數(shù)a(x)。
本例在所述二叉樹結(jié)構(gòu)的第一層至第n層中,運(yùn)算數(shù)b(x)的bi輸入至第i+1層;從第一層開始,若b0的數(shù)值為0則左二叉樹的左根節(jié)點(diǎn)被選中,若b0的數(shù)值為1則右二叉樹的右根節(jié)點(diǎn)被選中,只有被選中的節(jié)點(diǎn)所包含的子樹被下一層使用;在被選中的節(jié)點(diǎn)的左孩子節(jié)點(diǎn)和右孩子節(jié)點(diǎn)中,若b1的數(shù)值為0則左孩子節(jié)點(diǎn)被選中,若b1的數(shù)值為1則右孩子節(jié)點(diǎn)被選中,只有被選中的節(jié)點(diǎn)所包含的子樹被下一層使用;以下所有層直到第n層均依據(jù)此方法選擇節(jié)點(diǎn),從第一層至第n層所有被選中的節(jié)點(diǎn)代表運(yùn)算數(shù)b(x)
本例所述運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x)的每一比特對(duì)應(yīng)輸入至所述二叉樹結(jié)構(gòu)的第一層至第n層,例如ai和bi分別輸入至第i+1層中,i為0~n-1的自然數(shù)。
本例在第n+1層節(jié)點(diǎn)中,輸出至與之相連的第n層的葉子節(jié)點(diǎn)nt,最后,把葉子節(jié)點(diǎn)nt作為計(jì)算結(jié)果逐層往上傳遞直至到根節(jié)點(diǎn),并且將逐層往上傳遞直至到根節(jié)點(diǎn)的路徑中的每一層對(duì)應(yīng)節(jié)點(diǎn)所代表的數(shù)值輸出至乘法結(jié)果c(x),例如第i層輸出至ci-1。
如圖3所示,本例在下面以n=3為例說明所述有限域乘法器的工作過程。
假定我們要運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x)的GF(23)乘法,并且a=(010)2,b=(100)2,在實(shí)際運(yùn)算中,運(yùn)算數(shù)a(x)和運(yùn)算數(shù)b(x)可以根據(jù)實(shí)際需要由輸入端口實(shí)現(xiàn)自定義輸入;首先需要找出哪兩條路徑代表a(x)和b(x)。
如圖3所示,二叉樹結(jié)構(gòu)通過計(jì)算確定路徑n1n2n3代表運(yùn)算數(shù)a(x),路徑n4n5n6代表運(yùn)算數(shù)b(x)。并且,葉子節(jié)點(diǎn)n3和葉子節(jié)點(diǎn)n6與第n+1層節(jié)點(diǎn)中的節(jié)點(diǎn)n7相連,而節(jié)點(diǎn)n7與第n層的葉子節(jié)點(diǎn)n8相連,所以,第n層的葉子節(jié)點(diǎn)n8與它的所有上層節(jié)點(diǎn)代表a(x)和b(x)的乘法結(jié)果,即路徑n4n9n8代表c(x),c=(110)2是乘法結(jié)果。
而葉子節(jié)點(diǎn)n3和葉子節(jié)點(diǎn)n6與第n+1層節(jié)點(diǎn)中的節(jié)點(diǎn)n7相連、節(jié)點(diǎn)n7與第n層的葉子節(jié)點(diǎn)n8相連的路徑連接來自于二叉樹的實(shí)際連接,例如:葉子節(jié)點(diǎn)ni和葉子節(jié)點(diǎn)nj與第n+1層的節(jié)點(diǎn)nk相連,假定從第一層的根節(jié)點(diǎn)到第n層的葉子節(jié)點(diǎn)ni的路徑代表GF(2n)的元素i,從第一層根節(jié)點(diǎn)到第n層的葉子節(jié)點(diǎn)nj的路徑代表GF(2n)的元素j。若GF(2n)的乘法有i×j=t,并且從第一層根節(jié)點(diǎn)到第n層的葉子節(jié)點(diǎn)nt的路徑代表GF(2n)的元素t,則第n+1層的節(jié)點(diǎn)nk與第n層的葉子節(jié)點(diǎn)nt相連。
綜上,本例通過二叉樹的結(jié)構(gòu)實(shí)現(xiàn)了有限域的乘法運(yùn)算,結(jié)構(gòu)簡(jiǎn)單,且在計(jì)算GF(2n)的乘法運(yùn)算中相對(duì)于現(xiàn)有的有限域乘法器有著明顯的速度優(yōu)勢(shì),可以廣泛運(yùn)用于各種工程領(lǐng)域。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。