本發(fā)明涉及通信
技術(shù)領(lǐng)域:
,尤其涉及一種基于密碼雜湊算法的壓縮方法及裝置。
背景技術(shù):
:隨著信息技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展和廣泛應(yīng)用,人們對(duì)信息數(shù)據(jù)的可信度要求也越來(lái)越高。在高速密碼芯片中,密碼雜湊算法(CryptographicHashAlgorithm,縮寫(xiě):SM3)密碼雜湊算法已經(jīng)越來(lái)越多的用于商用密碼應(yīng)用中的數(shù)字簽名和驗(yàn)證、消息認(rèn)證碼的生成與驗(yàn)證以及隨機(jī)數(shù)的生成。SM3密碼雜湊算法是國(guó)家密碼管理局于2010年12月公布的一種國(guó)產(chǎn)密碼算法。SM3密碼雜湊算法適用于商用密碼應(yīng)用中的數(shù)字簽名和認(rèn)證、消息認(rèn)證碼的生成與驗(yàn)證以及隨機(jī)數(shù)的生成,可以滿(mǎn)足多種密碼應(yīng)用的安全需求,同時(shí)還可為安全產(chǎn)品生產(chǎn)商提供產(chǎn)品和技術(shù)的標(biāo)準(zhǔn)定位以及標(biāo)準(zhǔn)化的參考,提高安全產(chǎn)品的可信性與互操作性。目前,SM3算法分為消息填充、迭代壓縮和雜湊值三步。圖1為現(xiàn)有的單周期SM3算法的壓縮步驟的結(jié)構(gòu)示意圖,請(qǐng)參閱圖1,j為待壓縮字的序號(hào),范圍是0~15,Wj為待壓縮的字,A-H為變量字,tj為常量,Wcj為擴(kuò)展后的字。在每一周期中,通過(guò)布爾函數(shù)、壓縮函數(shù)、加法器以及移位,來(lái)實(shí)現(xiàn)對(duì)A-H字寄存器中值的壓縮。但是,這種電路結(jié)構(gòu)造成電路的關(guān)鍵路徑比較長(zhǎng),在當(dāng)前的壓縮輪數(shù)中,壓縮A或E的關(guān)鍵路徑需要經(jīng)過(guò)三個(gè)加法器,由于加法器的時(shí)延較大,會(huì)導(dǎo)致電路的時(shí)鐘頻率和吞吐率較低。公開(kāi)于該
背景技術(shù):
部分的信息僅僅旨在增加對(duì)本發(fā)明的總體背景的理解,而不應(yīng)當(dāng)被視為承認(rèn)或以任何形式暗示該信息構(gòu)成已為本領(lǐng)域一般技術(shù)人員所公知的現(xiàn)有技術(shù)。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明要解決的技術(shù)問(wèn)題是,如何提供一種高吞吐率的基于密碼雜湊算法的壓縮方法及裝置。為解決以上技術(shù)問(wèn)題,本發(fā)明在第一方面提供一種基于密碼雜湊算法的壓縮方法,包括:獲取各變量字的初值,所述初值為上一周期各變量字的壓縮結(jié)果或各變量字的初始值,所述變量字包括:第一變量字、第二變量字、第三變量字、第四變量字;獲取預(yù)計(jì)算擴(kuò)展字,其中,所述預(yù)計(jì)算擴(kuò)展字為擴(kuò)展字與所述第四變量字初值的和;對(duì)所述第一變量字、所述第二變量字、所述第三變量字的初值進(jìn)行布爾函數(shù)處理;將所述預(yù)計(jì)算擴(kuò)展字、所述第一變量字的初值、補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果進(jìn)行壓縮加和處理,其中,所述補(bǔ)償結(jié)果為進(jìn)行預(yù)設(shè)位數(shù)移位后的常數(shù)與預(yù)設(shè)的補(bǔ)償值的和;對(duì)所述壓縮加和處理后的結(jié)果進(jìn)行選擇;對(duì)所述選擇后的加和處理后結(jié)果進(jìn)行置換運(yùn)算,得到當(dāng)前周期的所述第一變量字的壓縮結(jié)果。在一種可能的實(shí)現(xiàn)方式中,所述變量字還包括:第五變量字;所述將所述預(yù)計(jì)算擴(kuò)展字、所述字寄存器初值、補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果進(jìn)行壓縮加和處理,包括:獲取所述第五變量字的初值,對(duì)所述第五變量字的初值進(jìn)行預(yù)設(shè)位數(shù)的移位;將所述移位后的第五變量字的初值、所述預(yù)計(jì)算擴(kuò)展字、所述第一變量字初值、所述補(bǔ)償結(jié)果以及所述布爾函數(shù)處理后的結(jié)果,進(jìn)行三次壓縮處理;對(duì)所述三次壓縮處理后的結(jié)果進(jìn)行加和。在一種可能的實(shí)現(xiàn)方式中,所述對(duì)所述壓縮加和處理后的結(jié)果進(jìn)行選擇,包括:獲取所述移位后的第五變量字的初值;將所述移位后的第五變量字的初值、所述第一變量字的初值和所述移位后的常數(shù)進(jìn)行壓縮處理;將所述壓縮處理后的結(jié)果加和,并記錄第一加法器的進(jìn)位輸出位作為第一控制位;將所述壓縮處理后的結(jié)果進(jìn)行預(yù)設(shè)位數(shù)的移位,對(duì)移位后的結(jié)果進(jìn)行加和,并記錄第二加法器的進(jìn)位輸出位作為第二控制位,根據(jù)所述第一控制位和所述第二控制位,對(duì)所述壓縮加和處理后的結(jié)果進(jìn)行選擇。在一種可能的實(shí)現(xiàn)方式中,所述補(bǔ)償值包括第一補(bǔ)償值、第二補(bǔ)償值、第三補(bǔ)償值和第四補(bǔ)償值;所述補(bǔ)償結(jié)果包括第一補(bǔ)償結(jié)果、第二補(bǔ)償結(jié)果、第三補(bǔ)償結(jié)果、第四補(bǔ)償結(jié)果;所述第一補(bǔ)償結(jié)果為所述第一補(bǔ)償值與所述移位后的常數(shù)的和;所述第二補(bǔ)償結(jié)果為所述第二補(bǔ)償值與所述移位后的常數(shù)的和;所述第三補(bǔ)償結(jié)果為所述第三補(bǔ)償值與所述移位后的常數(shù)的和;和所述第四補(bǔ)償結(jié)果為所述第四補(bǔ)償值與所述移位后的常數(shù)的和。在一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述第一控制位和所述第二控制位,對(duì)所述壓縮加和處理后的結(jié)果進(jìn)行選擇包括:建立所述第一控制位、所述第二控制位與所述第一補(bǔ)償結(jié)果、所述第二補(bǔ)償結(jié)果、所述第三補(bǔ)償結(jié)果、所述第四補(bǔ)償結(jié)果之間的對(duì)應(yīng)關(guān)系;根據(jù)所述第一控制位、所述第二控制位以及所述對(duì)應(yīng)關(guān)系,選擇所述壓縮加和處理后的結(jié)果。本發(fā)明在第二方面提供一種基于密碼雜湊算法的壓縮裝置,包括:獲取模塊,用于獲取各變量字的初值,所述初值為上一周期各變量字的壓縮結(jié)果或各變量字的初始值,所述變量字包括:第一變量字、第二變量字、第三變量字、第四變量字;所述獲取模塊,還用于獲取預(yù)計(jì)算擴(kuò)展字,其中,所述預(yù)計(jì)算擴(kuò)展字為擴(kuò)展字與所述第四變量字初值的和;布爾函數(shù)處理模塊,用于對(duì)所述第一變量字、所述第二變量字、所述第三變量字的初值進(jìn)行布爾函數(shù)處理;壓縮加和處理模塊,用于將所述預(yù)計(jì)算擴(kuò)展字、所述第一變量字的初值、補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果進(jìn)行壓縮加和處理,其中,所述補(bǔ)償結(jié)果為進(jìn)行預(yù)設(shè)位數(shù)移位后的常數(shù)與預(yù)設(shè)的補(bǔ)償值的和;選擇模塊,用于對(duì)所述壓縮加和處理后的結(jié)果進(jìn)行選擇;置換運(yùn)算模塊,用于對(duì)所述選擇后的加和處理后結(jié)果進(jìn)行置換運(yùn)算,得到當(dāng)前周期的所述第一變量字的壓縮結(jié)果。在一種可能的實(shí)現(xiàn)方式中,所述獲取模塊中的變量字還包括:第五變量字;所述壓縮加和處理模塊,用于獲取所述第五變量字的初值,對(duì)所述第五變量字的初值進(jìn)行預(yù)設(shè)位數(shù)的移位;將所述移位后的第五變量字的初值、所述預(yù)計(jì)算擴(kuò)展字、所述第一變量字初值、所述補(bǔ)償結(jié)果以及所述布爾函數(shù)處理后的結(jié)果,進(jìn)行三次壓縮處理;對(duì)所述三次壓縮處理后的結(jié)果進(jìn)行加和。在一種可能的實(shí)現(xiàn)方式中,所述選擇模塊用于:獲取所述移位后的第五變量字的初值;將所述移位后的第五變量字的初值、所述第一變量字的初值和所述移位后的常數(shù)進(jìn)行壓縮處理;將所述壓縮處理后的結(jié)果加和,并記錄第一加法器的進(jìn)位輸出位作為第一控制位;將所述壓縮處理后的結(jié)果進(jìn)行預(yù)設(shè)位數(shù)的移位,對(duì)移位后的結(jié)果進(jìn)行加和,并記錄第二加法器的進(jìn)位輸出位作為第二控制位,根據(jù)所述第一控制位和所述第二控制位,對(duì)所述壓縮加和處理后的結(jié)果進(jìn)行選擇。在一種可能的實(shí)現(xiàn)方式中,所述壓縮加和處理模塊中的所述補(bǔ)償值包括第一補(bǔ)償值、第二補(bǔ)償值、第三補(bǔ)償值和第四補(bǔ)償值;所述補(bǔ)償結(jié)果包括第一補(bǔ)償結(jié)果、第二補(bǔ)償結(jié)果、第三補(bǔ)償結(jié)果、第四補(bǔ)償結(jié)果;所述第一補(bǔ)償結(jié)果為所述第一補(bǔ)償值與所述移位后的常數(shù)的和;所述第二補(bǔ)償結(jié)果為所述第二補(bǔ)償值與所述移位后的常數(shù)的和;所述第三補(bǔ)償結(jié)果為所述第三補(bǔ)償值與所述移位后的常數(shù)的和;和所述第四補(bǔ)償結(jié)果為所述第四補(bǔ)償值與所述移位后的常數(shù)的和。在一種可能的實(shí)現(xiàn)方式中,所述選擇模塊用于:建立所述第一控制位、所述第二控制位與所述第一補(bǔ)償結(jié)果、所述第二補(bǔ)償結(jié)果、所述第三補(bǔ)償結(jié)果、所述第四補(bǔ)償結(jié)果之間的對(duì)應(yīng)關(guān)系;根據(jù)所述第一控制位、所述第二控制位以及所述對(duì)應(yīng)關(guān)系,選擇所述壓縮加和處理后的結(jié)果。本發(fā)明提供的基于密碼雜湊算法的壓縮方法及裝置,通過(guò)將預(yù)計(jì)算擴(kuò)展字、第一變量字的初值、補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果進(jìn)行壓縮加和處理并選擇與本輪壓縮中對(duì)應(yīng)的壓縮加和處理后的結(jié)果,可以縮短密碼雜湊算法的關(guān)鍵路徑,降低關(guān)鍵路徑時(shí)延,提高電路的吞吐率。根據(jù)下面參考附圖對(duì)示例性實(shí)施例的詳細(xì)說(shuō)明,本發(fā)明的其它特征及方面將變得清楚。附圖說(shuō)明包含在說(shuō)明書(shū)中并且構(gòu)成說(shuō)明書(shū)的一部分的附圖與說(shuō)明書(shū)一起示出了本發(fā)明的示例性實(shí)施例、特征和方面,并且用于解釋本發(fā)明的原理。圖1為現(xiàn)有的單周期SM3算法的壓縮步驟的結(jié)構(gòu)示意圖;圖2為電路級(jí)優(yōu)化后的單周期SM3算法的壓縮步驟的結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例一提供的基于密碼雜湊算法的壓縮方法的流程圖;圖4為本發(fā)明實(shí)施例一提供的基于密碼雜湊算法的壓縮電路結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例二提供的基于密碼雜湊算法的壓縮方法的流程圖;圖6為本發(fā)明實(shí)施例二提供的基于密碼雜湊算法的壓縮電路結(jié)構(gòu)示意圖;圖7為實(shí)現(xiàn)壓縮加和處理的五輸入兩輸出壓縮加法器的結(jié)構(gòu)示意圖;圖8示出本發(fā)明實(shí)施例三提供的基于密碼雜湊算法的壓縮裝置的結(jié)構(gòu)示意圖。具體實(shí)施方式下面結(jié)合附圖,對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)描述,但應(yīng)當(dāng)理解本發(fā)明的保護(hù)范圍并不受具體實(shí)施方式的限制。為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。除非另有其它明確表示,否則在整個(gè)說(shuō)明書(shū)和權(quán)利要求書(shū)中,術(shù)語(yǔ)“包括”或其變換如“包含”或“包括有”等等將被理解為包括所陳述的元件或組成部分,而并未排除其它元件或其它組成部分。在這里專(zhuān)用的詞“示例性”意為“用作例子、實(shí)施例或說(shuō)明性”。這里作為“示例性”所說(shuō)明的任何實(shí)施例不必解釋為優(yōu)于或好于其它實(shí)施例。另外,為了更好的說(shuō)明本發(fā)明,在下文的具體實(shí)施方式中給出了眾多的具體細(xì)節(jié)。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,沒(méi)有某些具體細(xì)節(jié),本發(fā)明同樣可以實(shí)施。在一些實(shí)例中,對(duì)于本領(lǐng)域技術(shù)人員熟知的方法、手段、元件未作詳細(xì)描述,以便于凸顯本發(fā)明的主旨。國(guó)家密碼管理局公布的SM3密碼雜湊算法中,規(guī)定了SM3的計(jì)算方法和計(jì)算步驟。SM3密碼雜湊算法分為消息填充、迭代壓縮和雜湊值三步。其中,消息填充是將長(zhǎng)度小于264-bit的消息m,填充為長(zhǎng)度為512-bit的整倍數(shù)的消息塊m’;迭代壓縮是SM3算法的核心,把填充后的消息m’按照固定的512-bit進(jìn)行分組,得到消息分組B(0)B(1)…B(n-1),然后對(duì)每個(gè)512-bit分組B(i)逐次壓縮,最終得到整個(gè)消息m’的256-bit的雜湊值(hashvalue),其中,n=消息m’的長(zhǎng)度/512。迭代壓縮過(guò)程包括迭代過(guò)程、消息擴(kuò)展和壓縮函數(shù),其中,消息擴(kuò)展和壓縮函數(shù)的具體算法如下:1、消息擴(kuò)展將消息分組B(i)按以下方法擴(kuò)展生成132個(gè)字W0;W1;…W67;W’0;W’1;…W’63,用于壓縮函數(shù)CF。其中,68個(gè)W和64個(gè)W’,均是32-bit的字。a)將消息分組B(i)劃分為16個(gè)字W0;W1;…W15。b)FORj=16TO67Wj=P1(Wj-16⊕Wj-9⊕(Wj-3<<<15))⊕(Wj-1<<<7)⊕Wj-6]]>ENDFORc)FORj=0TO63W,j=Wj⊕Wj+4]]>ENDFOR2、壓縮函數(shù)令A(yù),B,C,D,E,F,G,H為32-bit字寄存器,SS1,SS2,TT1,TT2為32-bit中間變量,壓縮函數(shù)Vi+1=CF(V(i),B(i)),0≤i≤n-1。計(jì)算消息分組B(i)的雜湊值V(i+1)過(guò)程描述如下:ABCDEFGH=V(i);FORj=0TO63;SS1=((A<<<12)+E+(Tj<<<j))<<<7;SS2=SS1⊕(A<<<12);]]>TT1=FFj(A,B,C)+D+SS2+W’j;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);ENDFOR;V(i+1)=ABCDEFGH⊕V(i);]]>其中,Tj=79cc45190≤j≤157a879d8a16≤j≤63;]]>P0(X)=X⊕(X<<<9)⊕(X<<<17);]]>P1(X)=X⊕(X<<<15)⊕(X<<<23);]]>32比特異或運(yùn)算;32比特非運(yùn)算;+:mod232算術(shù)加運(yùn)算;<<<k:循環(huán)左移k比特運(yùn)算。在上述計(jì)算步驟中,可以看出,針對(duì)A、E的路徑最長(zhǎng)。在實(shí)際運(yùn)算過(guò)程中,路徑E的計(jì)算時(shí)間最長(zhǎng),因此稱(chēng)為關(guān)鍵路徑。本發(fā)明主要針對(duì)參數(shù)E的計(jì)算進(jìn)行研究,參數(shù)A的硬件實(shí)現(xiàn)與E基本相同,在此不做贅述。圖2為電路級(jí)優(yōu)化后的單周期SM3算法的壓縮步驟的結(jié)構(gòu)示意圖,圖2與圖1相比,是針對(duì)參數(shù)E的壓縮結(jié)構(gòu)示意圖,使用壓縮器CSA對(duì)上一輪中的E和tj進(jìn)行壓縮,壓縮后通過(guò)加法器,減少了一個(gè)加法器的時(shí)延。由于經(jīng)過(guò)CSA和加法器的結(jié)果需要進(jìn)行移位,因此無(wú)法合并下一個(gè)加法器。此時(shí),為不改變算法的前提下,單周期最優(yōu)的實(shí)現(xiàn)電路。實(shí)施例1圖3為本發(fā)明實(shí)施例一提供的基于密碼雜湊算法的壓縮方法的流程圖,圖4為本發(fā)明實(shí)施例一提供的基于密碼雜湊算法的壓縮電路結(jié)構(gòu)示意圖,如圖3、圖4所示,該方法包括:步驟S1,獲取各變量字的初值,所述初值為上一周期各變量字的壓縮結(jié)果或各變量字的初始值,所述變量字包括:第一變量字、第二變量字、第三變量字、第四變量字。具體地,變量字存儲(chǔ)在寄存器中,第一變量字可以對(duì)應(yīng)算法中的E,第二變量字可以對(duì)應(yīng)算法中的F,第三變量字可以對(duì)應(yīng)算法中的G,第四變量字可以對(duì)應(yīng)算法中的H,第五變量字可以對(duì)應(yīng)算法中的A。步驟S2,獲取預(yù)計(jì)算擴(kuò)展字,其中預(yù)計(jì)算擴(kuò)展字為擴(kuò)展字與所述第四變量字初值的和。具體地,擴(kuò)展字對(duì)應(yīng)Wj,預(yù)計(jì)算擴(kuò)展字對(duì)應(yīng)Wj+H。其中,可以通過(guò)使用預(yù)計(jì)算,在上一時(shí)鐘設(shè)置加法器,實(shí)現(xiàn)Wj+H運(yùn)算,并不會(huì)增加關(guān)鍵路徑的時(shí)延,提高工作頻率。Wj的計(jì)算方法請(qǐng)參閱SM3算法的消息擴(kuò)展部分。步驟S3,對(duì)所述第一變量字、所述第二變量字、所述第三變量字的初值進(jìn)行布爾函數(shù)處理;具體地,布爾函數(shù)的表達(dá)式請(qǐng)參閱下式。其中,X,Y,Z分別對(duì)應(yīng)本實(shí)施例中的E,F(xiàn),G。步驟S4,將所述預(yù)計(jì)算擴(kuò)展字、所述第一變量字的初值、補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果進(jìn)行壓縮加和處理,其中,所述補(bǔ)償結(jié)果為按照預(yù)設(shè)位數(shù)移位后常數(shù)與預(yù)設(shè)的補(bǔ)償值的和。常數(shù)對(duì)應(yīng)算法中的Tj,按照預(yù)設(shè)位數(shù)移位后常數(shù)對(duì)應(yīng)Tj<<<j,也就是Tj左移j位。Tj計(jì)算公式請(qǐng)參閱公式(2)。Tj=9cc45190≤j≤157a879d8a16≤j≤63---(2)]]>步驟S5,對(duì)所述壓縮加和處理后的結(jié)果進(jìn)行選擇;具體地,可以通過(guò)設(shè)置選擇器,對(duì)壓縮加和處理后的結(jié)果進(jìn)行選擇。步驟S6,對(duì)所述選擇后的加和處理后結(jié)果進(jìn)行置換運(yùn)算,得到當(dāng)前周期的所述第一變量字的壓縮結(jié)果。置換運(yùn)算函數(shù)為P0,請(qǐng)參閱公式3。其中,X為字,對(duì)應(yīng)步驟6中的對(duì)所述選擇后的加和處理后結(jié)果。實(shí)施例中,通過(guò)將預(yù)計(jì)算擴(kuò)展字、第一變量字的初值、補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果進(jìn)行壓縮加和處理并選擇與本輪壓縮中對(duì)應(yīng)的壓縮加和處理后的結(jié)果,可以縮短密碼雜湊算法的關(guān)鍵路徑,降低關(guān)鍵路徑時(shí)延,提高電路的吞吐率。實(shí)施例2圖5為本發(fā)明實(shí)施例二提供的基于密碼雜湊算法的壓縮方法的流程圖,圖6為本發(fā)明實(shí)施例二提供的基于密碼雜湊算法的壓縮電路結(jié)構(gòu)示意圖,在圖5中與圖3采用相同附圖標(biāo)記的步驟,均與圖3適用于相同的文字說(shuō)明,在此不再贅述。本實(shí)施例中,變量字還可以包括:第五變量字;步驟S4可以包括:步驟S401,獲取所述第五變量字的初值,對(duì)所述第五變量字的初值進(jìn)行預(yù)設(shè)位數(shù)的移位;第五變量字對(duì)應(yīng)算法中的A變量字。步驟S402,將所述移位后的第五變量字的初值、所述預(yù)計(jì)算擴(kuò)展字、所述第一變量字初值、所述補(bǔ)償結(jié)果以及所述布爾函數(shù)處理后的結(jié)果,進(jìn)行三次壓縮處理;具體地,對(duì)第五變量字的初值進(jìn)行預(yù)設(shè)位數(shù)的移位,可以為,對(duì)上一輪的計(jì)算結(jié)果A或A的初始值,進(jìn)行左移12位的位移。第一變量字初值為E變量字初值。在一種可能的實(shí)現(xiàn)方式中,補(bǔ)償值可以包括第一補(bǔ)償值、第二補(bǔ)償值、第三補(bǔ)償值和第四補(bǔ)償值;補(bǔ)償結(jié)果包括第一補(bǔ)償結(jié)果、第二補(bǔ)償結(jié)果、第三補(bǔ)償結(jié)果、第四補(bǔ)償結(jié)果;所述第一補(bǔ)償結(jié)果為所述第一補(bǔ)償值與所述移位后常數(shù)的和;所述第二補(bǔ)償結(jié)果為所述第二補(bǔ)償值與所述移位后常數(shù)的和;所述第三補(bǔ)償結(jié)果為所述第三補(bǔ)償值與所述移位后常數(shù)的;和所述第四補(bǔ)償結(jié)果為所述第四補(bǔ)償值與所述移位后常數(shù)的和。步驟S403,對(duì)所述三次壓縮處理后的結(jié)果進(jìn)行加和。其中,本實(shí)施例中對(duì)實(shí)施例一中的壓縮加和處理進(jìn)行進(jìn)一步限定,壓縮加和處理中可以包括三次壓縮處理以及一次加和處理。圖7為實(shí)現(xiàn)壓縮加和處理的五輸入兩輸出壓縮加法器的結(jié)構(gòu)示意圖。請(qǐng)參閱圖7和圖6,可以通過(guò)分別設(shè)置與第一補(bǔ)償結(jié)果、第二補(bǔ)償結(jié)果、第三補(bǔ)償結(jié)果、第四補(bǔ)償結(jié)果對(duì)應(yīng)的四個(gè)壓縮加法器來(lái)實(shí)現(xiàn)上述步驟。更為具體的,第一壓縮加法器的輸入為移位后的第五變量字的初值、預(yù)計(jì)算擴(kuò)展字、第一變量字初值、第一補(bǔ)償結(jié)果以及所述布爾函數(shù)處理后的結(jié)果;第二壓縮加法器的輸入為移位后的第五變量字的初值、預(yù)計(jì)算擴(kuò)展字、第一變量字初值、第二補(bǔ)償結(jié)果以及所述布爾函數(shù)處理后的結(jié)果;第三壓縮加法器的輸入為移位后的第五變量字的初值、預(yù)計(jì)算擴(kuò)展字、第一變量字初值、第三補(bǔ)償結(jié)果以及所述布爾函數(shù)處理后的結(jié)果;第四壓縮加法器的輸入為移位后的第五變量字的初值、預(yù)計(jì)算擴(kuò)展字、第一變量字初值、第四補(bǔ)償結(jié)果以及所述布爾函數(shù)處理后的結(jié)果。由此,通過(guò)使用五輸入三輸出的壓縮加法器,五輸入三輸出的壓縮加法器包括三個(gè)壓縮器CSA和一個(gè)加法器,可以將加法器的數(shù)量降為一個(gè),這樣可以將關(guān)鍵路徑上的加法器減少,關(guān)鍵路徑的縮短可以獲取高速的工作頻率,從而達(dá)到高吞吐率的目的。相應(yīng)的,可以通過(guò)以下步驟實(shí)現(xiàn)對(duì)壓縮加和處理后的結(jié)果進(jìn)行選擇。步驟S5可以包括:步驟S501,獲取所述移位后的第五變量字的初值;步驟S502,將所述移位后的第五變量字的初值、所述第一變量字的初值和所述移位后的常數(shù)進(jìn)行壓縮處理;步驟S503,將所述壓縮處理后的結(jié)果加和,并記錄第一加法器的進(jìn)位輸出位作為第一控制位;具體地,可以通過(guò)設(shè)置三輸入兩輸出的壓縮器和加法器來(lái)實(shí)現(xiàn)。將所述移位后的第五變量字的初值、所述第一變量字的初值和所述移位后的常數(shù)輸入三輸入兩輸出的壓縮器,將壓縮器的輸出結(jié)果輸入第一加法器的輸入端,記錄第一加法器的進(jìn)位輸出位作為第一控制位。步驟S504,將所述壓縮處理后的結(jié)果進(jìn)行預(yù)設(shè)位數(shù)的移位,對(duì)移位后的結(jié)果進(jìn)行加和,并記錄第二加法器的進(jìn)位輸出位作為第二控制位,具體地,將所述移位后的第五變量字的初值、所述第一變量字的初值和所述移位后的常數(shù)輸入三輸入兩輸出的壓縮器后,壓縮器的輸出結(jié)果進(jìn)行預(yù)設(shè)位數(shù)的移位,左移7位,并記錄第二加法器的進(jìn)位輸出位作為第二控制位。步驟S505,根據(jù)所述第一控制位和所述第二控制位,選擇所述壓縮加和處理后的結(jié)果。在一種可能的實(shí)現(xiàn)方式中,步驟S505可以通過(guò)以下方式實(shí)現(xiàn)。建立所述第一控制位、所述第二控制位與所述第一補(bǔ)償結(jié)果、所述第二補(bǔ)償結(jié)果、所述第三補(bǔ)償結(jié)果、所述第四補(bǔ)償結(jié)果之間的對(duì)應(yīng)關(guān)系;根據(jù)所述第一控制位、所述第二控制位以及所述對(duì)應(yīng)關(guān)系,選擇所述壓縮加和處理后的結(jié)果。為了最大化減少關(guān)鍵路徑的延時(shí),可以突破算法的限制,即通過(guò)改變現(xiàn)有電路中如圖1、圖2,加數(shù)加和再移位的算法約束,減少加法器,后續(xù)通過(guò)補(bǔ)償運(yùn)算保證運(yùn)算功能的正確。由于電路中存在圖2中對(duì)CSA和加法器的輸出左移7位的限制,現(xiàn)有的電路無(wú)法對(duì)預(yù)計(jì)算擴(kuò)展字、第一變量字初值、補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果先進(jìn)行壓縮,壓縮后在使用加法器進(jìn)行加和。而本發(fā)明通過(guò)將所有的加數(shù)先行相加,經(jīng)過(guò)三次CSA壓縮后,再經(jīng)過(guò)一個(gè)加法器得出一個(gè)結(jié)果。但是由于實(shí)際上,移位后相加和移位前相加會(huì)存在最高位是否存在溢出的情況。即移位后有進(jìn)位,移位后無(wú)進(jìn)位,移位前有進(jìn)位,移位前無(wú)進(jìn)位,四種情況,所以可以將這四種情況分別計(jì)算出來(lái),最后再進(jìn)行統(tǒng)一的選擇。具體地,預(yù)設(shè)關(guān)系可以為:設(shè)置當(dāng)?shù)谝豢刂莆缓偷诙刂莆粸?0時(shí),對(duì)應(yīng)第一補(bǔ)償結(jié)果,第一補(bǔ)償結(jié)果為0。當(dāng)?shù)谝豢刂莆缓偷诙刂莆粸?1時(shí),對(duì)應(yīng)第二補(bǔ)償結(jié)果,第二補(bǔ)償結(jié)果為FFFFFF80。當(dāng)?shù)谝豢刂莆缓偷诙刂莆粸?0時(shí),對(duì)應(yīng)第三補(bǔ)償結(jié)果,第三補(bǔ)償結(jié)果為1。當(dāng)?shù)谝豢刂莆缓偷诙刂莆粸?1時(shí),對(duì)應(yīng)第四補(bǔ)償結(jié)果,第四補(bǔ)償結(jié)果為FFFFFF81。請(qǐng)?jiān)俅螀㈤唸D6,第一壓縮加法器的輸入端為第一補(bǔ)償結(jié)果即移位后的Tj與第一補(bǔ)償值的和、預(yù)計(jì)算擴(kuò)展字即wj+H、布爾函數(shù)處理后的結(jié)果即GGj(E,F,G),第一變量字初值即E以及移位后的第五變量字的初值即A左移12位后的值。第二壓縮加法器、第三壓縮加法器、第四壓縮加法器的輸入端分別為第二補(bǔ)償結(jié)果、第三補(bǔ)償結(jié)果、第四補(bǔ)償結(jié)果,其余四個(gè)輸入與第一壓縮加法器的輸入相同,在此不在贅述。選擇器接收上述四個(gè)壓縮加法器的輸出結(jié)果。將移位后的Tj、移位后的A、E的值通過(guò)CSA壓縮,并將壓縮后結(jié)果經(jīng)過(guò)加法器加和后得到的進(jìn)位輸出端作為第一控制位。將移位后的Tj、移位后的A、E的值通過(guò)CSA壓縮,壓縮后進(jìn)行移位,將移位后的壓縮后結(jié)果經(jīng)過(guò)加法器加,得到的進(jìn)位輸出端作為第二控制位。選擇器根據(jù)第一控制位和第二控制位的值,可以判斷出移位前后是否存在溢出位,從而實(shí)現(xiàn)對(duì)壓縮加和結(jié)果進(jìn)行準(zhǔn)確選擇。由此,通過(guò)將移位后的第五變量字的初值、預(yù)計(jì)算擴(kuò)展字、第一變量字初值、所述補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果先行通過(guò)壓縮加法器進(jìn)行壓縮加和,根據(jù)第一控制位、第二控制位以及預(yù)先設(shè)定的對(duì)應(yīng)關(guān)系,選擇所述壓縮加和處理后的結(jié)果。實(shí)現(xiàn)了減少關(guān)鍵路徑上的加法器各數(shù),提工作頻率,從而提高吞吐率。需要說(shuō)明的是,本發(fā)明實(shí)施例中附圖給出的只是一種實(shí)現(xiàn)方式,并不是對(duì)本發(fā)明實(shí)施例執(zhí)行先后順序進(jìn)行的限定。實(shí)施例3圖8示出本發(fā)明實(shí)施例三提供的基于密碼雜湊算法的壓縮裝置的結(jié)構(gòu)示意圖,如圖8所示,該裝置10包括:獲取模塊110、布爾函數(shù)處理模塊120、壓縮加和處理模塊130、選擇模塊140、置換運(yùn)算模塊150。獲取模塊110,用于獲取各變量字的初值,所述初值為上一周期各變量字的壓縮結(jié)果或各變量字的初始值,所述變量字包括:第一變量字、第二變量字、第三變量字、第四變量字;所述獲取模塊110,還用于獲取預(yù)計(jì)算擴(kuò)展字,其中,所述預(yù)計(jì)算擴(kuò)展字為擴(kuò)展字與所述第四變量字初值的和;布爾函數(shù)處理模塊120,用于對(duì)所述第一變量字、所述第二變量字、所述第三變量字的初值進(jìn)行布爾函數(shù)處理;壓縮加和處理模塊130,用于將所述預(yù)計(jì)算擴(kuò)展字、所述第一變量字的初值、補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果進(jìn)行壓縮加和處理,其中,所述補(bǔ)償結(jié)果為進(jìn)行預(yù)設(shè)位數(shù)移位后的常數(shù)與預(yù)設(shè)的補(bǔ)償值的和;選擇模塊140,用于對(duì)所述壓縮加和處理后的結(jié)果進(jìn)行選擇;置換運(yùn)算模塊150,用于對(duì)所述選擇后的加和處理后結(jié)果進(jìn)行置換運(yùn)算,得到當(dāng)前周期的所述第一變量字的壓縮結(jié)果。實(shí)施例中,通過(guò)將預(yù)計(jì)算擴(kuò)展字、第一變量字的初值、補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果進(jìn)行壓縮加和處理并選擇與本輪壓縮中對(duì)應(yīng)的壓縮加和處理后的結(jié)果,可以壓縮第一變量字的關(guān)鍵路徑,降低關(guān)鍵路徑時(shí)延,提高電路的吞吐率。進(jìn)一步地,所述獲取模塊110中的變量字還包括:第五變量字;所述壓縮加和處理模塊130,用于獲取所述第五變量字的初值,對(duì)所述第五變量字的初值進(jìn)行預(yù)設(shè)位數(shù)的移位;將所述移位后的第五變量字的初值、所述預(yù)計(jì)算擴(kuò)展字、所述第一變量字初值、所述補(bǔ)償結(jié)果以及所述布爾函數(shù)處理后的結(jié)果,進(jìn)行三次壓縮處理;對(duì)所述三次壓縮處理后的結(jié)果進(jìn)行加和。進(jìn)一步地,所述壓縮加和處理模塊130中的所述補(bǔ)償值包括第一補(bǔ)償值、第二補(bǔ)償值、第三補(bǔ)償值和第四補(bǔ)償值;所述補(bǔ)償結(jié)果包括第一補(bǔ)償結(jié)果、第二補(bǔ)償結(jié)果、第三補(bǔ)償結(jié)果、第四補(bǔ)償結(jié)果;所述第一補(bǔ)償結(jié)果為所述第一補(bǔ)償值與所述移位后的常數(shù)的和;所述第二補(bǔ)償結(jié)果為所述第二補(bǔ)償值與所述移位后的常數(shù)的和;所述第三補(bǔ)償結(jié)果為所述第三補(bǔ)償值與所述移位后的常數(shù)的和;和所述第四補(bǔ)償結(jié)果為所述第四補(bǔ)償值與所述移位后的常數(shù)的和。由此,通過(guò)使用五輸入三輸出的壓縮加法器,五輸入三輸出的壓縮加法器包括三個(gè)壓縮器CSA和一個(gè)加法器,可以將加法器的數(shù)量降為一個(gè),這樣可以將關(guān)鍵路徑上的加法器減少,關(guān)鍵路徑的縮短可以獲取高速的工作頻率,從而達(dá)到高吞吐率的目的。進(jìn)一步地,所述選擇模塊140用于:獲取所述移位后的第五變量字的初值;將所述移位后的第五變量字的初值、所述第一變量字的初值和所述移位后的常數(shù)進(jìn)行壓縮處理;將所述壓縮處理后的結(jié)果加和,并記錄第一加法器的進(jìn)位輸出位作為第一控制位;將所述壓縮處理后的結(jié)果進(jìn)行預(yù)設(shè)位數(shù)的移位,對(duì)移位后的結(jié)果進(jìn)行加和,并記錄第二加法器的進(jìn)位輸出位作為第二控制位,根據(jù)所述第一控制位和所述第二控制位,對(duì)所述壓縮加和處理后的結(jié)果進(jìn)行選擇。進(jìn)一步地,所述選擇模塊140用于:建立所述第一控制位、所述第二控制位與所述第一補(bǔ)償結(jié)果、所述第二補(bǔ)償結(jié)果、所述第三補(bǔ)償結(jié)果、所述第四補(bǔ)償結(jié)果之間的對(duì)應(yīng)關(guān)系;根據(jù)所述第一控制位、所述第二控制位以及所述對(duì)應(yīng)關(guān)系,選擇所述壓縮加和處理后的結(jié)果。由此,通過(guò)將移位后的第五變量字的初值、預(yù)計(jì)算擴(kuò)展字、第一變量字初值、所述補(bǔ)償結(jié)果以及布爾函數(shù)處理后的結(jié)果先行通過(guò)壓縮加法器進(jìn)行壓縮加和,根據(jù)第一控制位、第二控制位以及預(yù)先設(shè)定的對(duì)應(yīng)關(guān)系,選擇所述壓縮加和處理后的結(jié)果。實(shí)現(xiàn)了減少關(guān)鍵路徑上的加法器各數(shù),提工作頻率,從而提高吞吐率。前述對(duì)本發(fā)明的具體示例性實(shí)施方案的描述是為了說(shuō)明和例證的目的。這些描述并非想將本發(fā)明限定為所公開(kāi)的精確形式,并且很顯然,根據(jù)上述教導(dǎo),可以進(jìn)行很多改變和變化。對(duì)示例性實(shí)施例進(jìn)行選擇和描述的目的在于解釋本發(fā)明的特定原理及其實(shí)際應(yīng)用,從而使得本領(lǐng)域的技術(shù)人員能夠?qū)崿F(xiàn)并利用本發(fā)明的各種不同的示例性實(shí)施方案以及各種不同的選擇和改變。本發(fā)明的范圍意在由權(quán)利要求書(shū)及其等同形式所限定。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。當(dāng)前第1頁(yè)1 2 3