利用FPGA來(lái)實(shí)現RC6算法的設計與研究
式中:e一2.782 818 284 59…(自然對數);φ=1.618 033 988 749…(黃金分割)
當w分別為16、32、64時(shí),常數Pw、Qw分別如表1所列。在本設計中,w=16,輸入為128位的主密鑰,得到的是44個(gè)32位子密鑰。
RC6協(xié)處理器包含以下3個(gè)模塊:加解密模塊,加解密函數模塊和ROM模塊。頂層結構如圖1所示。
加解密模塊:包括輸入和輸出、加/解密選擇、狀態(tài)機,以及函數調用聲明和ROM調用取址。用于輸入128位明文或密文,并且利用一個(gè)狀態(tài)機定義程序順序執行和保證循環(huán)控制,實(shí)現對ROM的44個(gè)子密鑰讀取,以及將數據輸入函數中進(jìn)行處理。由于輸入ROM的地址是在一個(gè)時(shí)鐘控制下,子密鑰數據的輸出有一定的延時(shí),所以利用一個(gè)控制變量cnt實(shí)現地址提前一個(gè)時(shí)鐘左右輸入ROM,ROM接收到后輸出子密鑰,使在進(jìn)行數據加解密處理時(shí),已經(jīng)有準備好的子密鑰調用。
加解密函數模塊:利用work用戶(hù)自定義函數庫,定義算法中用到的函數。其中包括5個(gè)函數,分別是:RFunct、afunct、cfunct、lshift、rshift。頂層文件循環(huán)調用此函數21次,進(jìn)行加解密運算。
ROM模塊:先在QuartusII里面將預定義的子密鑰輸入rc6keyrom.mif文件中,調用QuartusII的MegaWizardPlug—In Manager,自動(dòng)生成ROM,供頂層文件調用。需要提前利用QuartusII建立一個(gè).mif文件,將子密鑰的數據輸入。
2.2 RC6協(xié)處理器的頂層原理圖
如圖2所示,基于FPGA的RC6算法協(xié)處理器分3個(gè)模塊:頂層模塊、RC6加解密函數模塊和ROM模塊。共有260個(gè)I/0口,包括131輸入端口和129個(gè)輸出端口。
2.3 各模塊的功能及實(shí)現
2.3.1 ROM模塊
圖3為QuartusII自動(dòng)生成的ROM模塊。ROM取址需要由加解密模塊提供地址輸入,然后輸出子密鑰。輸入地址為address[4..0],輸出為q[63..0]兩個(gè)子密鑰一起輸出到主程序中進(jìn)行。
評論