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

          新聞中心

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

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

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

            ROM模塊在輸入地址和得到子密鑰數(shù)據(jù)之間,有一定的延時,從地址“00”輸入,開始讀取到輸出子密鑰總時間約一個時鐘周期左右。所以在主函數(shù)調(diào)用ROM時,需提前1~2個時鐘輸入地址。

          程序

            由以上5個函數(shù)和加解密控制信號,可以的一次計算。主函數(shù)將需要進行計算的128位數(shù)據(jù)da—tain、2個子密鑰keyl和key2,以及加解密控制信號輸入到RFunct函數(shù)里;函數(shù)rfunct將其分配到a、b、c、d四個寄存器,計算b=(b+b+1)×b和d=(d+d+1)×d;然后調(diào)用左移函數(shù)計算templ=b5和temp2=d5,調(diào)用afunct和cfunct計算a和c,再重組a、b、c、d為dataout,結(jié)束運算后輸出dataout。

            2.3.3 加解密控制模塊

            如圖4所示,加解密端口定義為:

          加解密控制模塊

            輸入端口

          •   reset:復(fù)位信號,高電平有效。
          •   clk:工作時鐘。
          •   zset:加解密選擇信號,高電平為加密操作,反之則為解密操作。
          •   keyin[63..O]:從ROM輸入的子密鑰輸入。
          •   datain[127..O]:待加解密數(shù)據(jù)的輸入端。

            輸出端口

          •   flag:加解密結(jié)束信號,高電平有效。
          •   keyad出[4..O]:向ROM輸入5位的地址信號。
          •   dataout[127..O]:加解密模塊輸出的128位加解密后的數(shù)據(jù)。

            模塊功能

            從ROM模塊中,接收包含2個子密鑰的數(shù)據(jù)keyin,并在前32位和后32位分別為一個32位子密鑰,根據(jù)zset信號對密鑰和數(shù)據(jù)進行加解密操作。

            在主程序中一個狀態(tài)機來加解密運算:第1個狀態(tài)進行數(shù)據(jù)的初步處理,將128位數(shù)據(jù)分成4個32位數(shù)據(jù)保存在a、b、c、d這4個寄存器中;第2個狀態(tài)進行數(shù)據(jù)的初步運算,將結(jié)果保存在128位寄存器data中;第3個狀態(tài)和第4個狀態(tài)控制循環(huán)運算與ROM進行20次交互,一邊接收ROM子密鑰數(shù)據(jù),一邊對data進行運算,最后一個狀態(tài),接收最后2個密鑰,進行最后的加解密運算,得到新的a、b、c、d,重新組合成加/解密后的數(shù)據(jù),將其輸出。

            2.3.4 加解密頂層模塊

            加解密的頂層模塊包括了加解密控制模塊和ROM模塊。輸入/輸出信號描述如下:

            輸入信號

          •   reset:復(fù)位信號,高電平有效。
          •   clk:工作時鐘。
          •   zset:加解密選擇信號,高電平加密操作,反之則為解密操作。
          •   datain[l27..0]:待加/解密數(shù)據(jù)的輸入端。

            輸出信號

          •   flag:加解密結(jié)束信號,高電平有效。
          •   dataout[l27..0]:128位加解密后得到的數(shù)據(jù)。

            此加解密模塊需要260個I/0端口,如果加入串口通信,可將128位的輸入信號和輸出信號分別l位的輸入端口和1位的輸出端口來數(shù)據(jù)傳輸,非常方便。

            2.4 仿真結(jié)果分析

            圖5為RC6加解密的功能仿真圖,輸入和輸出是128位。當輸入明文為128位全零數(shù)據(jù)時,得到的加密結(jié)果是36A5C38F78F781564EDF29C11EA44898,解密結(jié)果是全零。另外,還測試了其他的一些數(shù)據(jù),根據(jù)官方公布的標準,此加解密模塊功能正確。

            在進行仿真時,RC6加解密模塊工作時鐘周期為100ns,頻率為10 MHz。從reset低電平開始后的第一個時鐘上升沿(0.45μs),至加解密運算結(jié)束并輸出結(jié)束信號flag(上升沿,8.958 376μs),總共耗時約為8.5μs。

          RC6加解密算法功能仿真圖

          圖5 RC6加解密算法功能仿真圖

            結(jié) 語

            本文基于技術(shù),實現(xiàn)了RC6算法。整個包括加解密函數(shù)模塊、加解密控制模塊、ROM模塊、UART模塊、輸入/輸出控制模塊等,通過軟件的仿真,并將程序下載到芯片進行硬件調(diào)試,驗證了的正確性和有效性。


          上一頁 1 2 3 下一頁

          評論


          相關(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); })();