<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 利用FPGA來(lái)實(shí)現RC6算法的設計與研究

利用FPGA來(lái)實(shí)現RC6算法的設計與研究

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

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

程序

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

  2.3.3 加解密控制模塊

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

加解密控制模塊

  輸入端口

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

  輸出端口

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

  模塊功能

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

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

  2.3.4 加解密頂層模塊

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

  輸入信號

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

  輸出信號

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

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

  2.4 仿真結果分析

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

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

RC6加解密算法功能仿真圖

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

  結 語(yǔ)

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


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>