新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機的RC5和RC6算法區別、實現與優化

        AVR單片機的RC5和RC6算法區別、實現與優化

        作者: 時間:2013-12-06 來源:網絡 收藏

          表2 常數Pw、Qw取值表

        W163264
        Pw0xB7E10xB7E151630xB7E151628AED2A6B
        Qw0x9E370x9E3779B90x9E3770B97F4A7C15

        (2)加密算法過程的偽代碼表示

          Input(A,B)

          A=A+S(0)B=B+S[1]

          for i=1 to r do

          A=((A+B)B)+S[2i]

          B=((B+A)A)+S[2i+1]

          Output(A,B)

          其中初始的A、B分別為要加密的兩個比特數為w的數據,最終的A、B分別為加密好的兩個比特數為w的數據。

        (3)解密算法過程的偽代碼表示

          Input(A,B)

          for i=r down to 1 do

          B=((B-S[2i+1])>>>A)+A

          A=((A-S[2i])>>>B)+B

          A=A-S[0] B=B-S[1]

          Output (A,B)

          其中初始A、B中的數據就是已經加密了的比特數為w的數據,最終的A、B中的數據為解密后的比特數為w的數據。

        1.4

        (1)混合密鑰生成過程偽代碼表示

          RC6混合密鑰生成過程與相同,只是t的取值為2r+4。

        (2)RC6加密算法過程偽代碼表示

          Input(A,B,C,D)

          B=B+S[0]D=D+S[1]

          for i=1 to r do

          t=(B×(2B+1))log2w

          u=(D×(2D+1))1og2w

          A=((A+t)t)+S[2i]

          C=((C+u)u)+S[2i+1]

          (A,B,C,D)=(B,C,D,A)

          A=A+S[2i+2]C=C+S[2i+3]

          Output(A,B,C,D)

          其中初始的A、B、C、D分別為要加密的四個比特數為w的數據,最終的A、B、C、D分別為加密好的四個比特數為w的數據。

        (3)RC6解密算法過程的偽代碼表示

          Input(A,B,C,D)

          C=C-S[2i+3]A=A-S[2i+2]

          for i=1 to r do

          (A,B,C,D)=(D,A,B,C)

          u=(D×(2D+1))log2w

          t=(B×(2B+1))log2w

          C=((C-S[2(r-i)+3])>>>t)+u

          A=((A-S[2(r-i)+2])>>>u)+t

          D=D-S[1] B=B-S[0]

          Output(A,B,C,D)

          其中初始的A、B、C、D分別為已經被加密的四個比特數為w的數據,最終的A、B、C、D分別為解密后的四個比特數為w的數據。

        2 RC5和的實現及改進

        2.1 的RC5和RC6算法流程

          RC5及RC6算法加密過程實現流程圖如圖1所示,解密過程實現流程圖如圖2所示,總體過程流程圖如圖3所示。

        AVR單片機的RC5和RC6算法區別、實現與優化

        AVR單片機的RC5和RC6算法區別、實現與優化

        AVR單片機的RC5和RC6算法區別、實現與優化

        2.2 RC5和RC6算法的改進

          ①在進行算法流程的安排時,考慮到AVR高速嵌入式單片機只有32個8位寄存器,為了節省寄存器的使用,應該在混合密鑰生成過程執行后,再把待加密的數據賦予寄存器。這樣在混合密鑰生成過程以前的寄存器都可以被使用,而不會對整個算法的執行結果造成影響。

          ②在進行RC5及RC6算法參數的選擇時,考慮到AVR高速嵌入式單片機指令最多只支持16位數據相加以及程序的簡潔化,所以在本程序中選擇w為16而沒有選擇w為32,r和b的值依據Rivest的建議分別取為12和16。

          ③在執行算法中的左循環或者右循環運算時,考慮到循環移位的效果,實際循環移位的位數應該為要執行移位次數的低1log2w位。在本程序中為要執行移位次數的后四位。

          ④在執行算法中的模2w加法運算、模2w減法運算、模2w乘法運算時,由于2w的取值為65536,而2個8位寄存器(0~15位)最高可以表 示數據的值為65535,數據再大就要向高位進位,所以在本程序執行上述的算法只需要考慮到2個8位寄存器所表達的值就得到了上述運算的最終結果,而不用 再進行模2w運算。



        關鍵詞: AVR單片機 RC5 RC6算法

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 梓潼县| 张掖市| 阜新| 西林县| 肃南| 阿坝| 东乡| 施秉县| 满城县| 湟中县| 石泉县| 海丰县| 云和县| 呈贡县| 竹山县| 白河县| 普安县| 苏尼特右旗| 会同县| 五台县| 荣昌县| 嵊州市| 陆良县| 泗洪县| 蒙山县| 山东| 当涂县| 彝良县| 镇巴县| 陕西省| 平山县| 无极县| 台安县| 嵊州市| 全椒县| 高清| 哈密市| 雷波县| 鹰潭市| 高雄市| 石阡县|