<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用FPGA來實(shí)現(xiàn)RC6算法的設(shè)計(jì)與研究

          利用FPGA來實(shí)現(xiàn)RC6算法的設(shè)計(jì)與研究

          作者: 時間:2011-01-13 來源:網(wǎng)絡(luò) 收藏


            式中:e一2.782 818 284 59…(自然對數(shù));φ=1.618 033 988 749…(黃金分割)

            當(dāng)w分別為16、32、64時,常數(shù)Pw、Qw分別如表1所列。在本中,w=16,輸入為128位的主密鑰,得到的是44個32位子密鑰。

          常數(shù)Pw

            2 加解密協(xié)處理器

            2.1 協(xié)處理器的頂層結(jié)構(gòu)

            協(xié)處理器包含以下3個模塊:加解密模塊,加解密函數(shù)模塊和ROM模塊。頂層結(jié)構(gòu)如圖1所示。

          頂層結(jié)構(gòu)

            加解密模塊:包括輸入和輸出、加/解密選擇、狀態(tài)機(jī),以及函數(shù)調(diào)用聲明和ROM調(diào)用取址。用于輸入128位明文或密文,并且一個狀態(tài)機(jī)定義程序順序執(zhí)行和保證循環(huán)控制,對ROM的44個子密鑰讀取,以及將數(shù)據(jù)輸入函數(shù)中進(jìn)行處理。由于輸入ROM的地址是在一個時鐘控制下,子密鑰數(shù)據(jù)的輸出有一定的延時,所以一個控制變量cnt地址提前一個時鐘左右輸入ROM,ROM接收到后輸出子密鑰,使在進(jìn)行數(shù)據(jù)加解密處理時,已經(jīng)有準(zhǔn)備好的子密鑰調(diào)用。

            加解密函數(shù)模塊:work用戶自定義函數(shù)庫,定義中用到的函數(shù)。其中包括5個函數(shù),分別是:RFunct、afunct、cfunct、lshift、rshift。頂層文件循環(huán)調(diào)用此函數(shù)21次,進(jìn)行加解密運(yùn)算。

            ROM模塊:先在QuartusII里面將預(yù)定義的子密鑰輸入rc6keyrom.mif文件中,調(diào)用QuartusII的MegaWizardPlug—In Manager,自動生成ROM,供頂層文件調(diào)用。需要提前利用QuartusII建立一個.mif文件,將子密鑰的數(shù)據(jù)輸入。

            2.2 RC6協(xié)處理器的頂層原理圖

            如圖2所示,基于的RC6協(xié)處理器分3個模塊:頂層模塊、RC6加解密函數(shù)模塊和ROM模塊。共有260個I/0口,包括131輸入端口和129個輸出端口。

          RC6協(xié)處理器的頂層原理圖

           2.3 各模塊的功能及

            2.3.1 ROM模塊

            圖3為QuartusII自動生成的ROM模塊。ROM取址需要由加解密模塊提供地址輸入,然后輸出子密鑰。輸入地址為address[4..0],輸出為q[63..0]兩個子密鑰一起輸出到主程序中進(jìn)行。

          QuartusII自動生成的ROM模塊



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();