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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > XXTEA加密算法的原理及其C語言實現(xiàn)

          XXTEA加密算法的原理及其C語言實現(xiàn)

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

          在數(shù)據(jù)的加解密領(lǐng)域,算法分為對稱密鑰與非對稱密鑰兩種。對稱密鑰與非對稱密鑰由于各自的特點(diǎn),所應(yīng)用的領(lǐng)域是不盡相同的。對稱密鑰加密算法由于其速度快,一般用于整體數(shù)據(jù)的加密,而非對稱密鑰加密算法的安全性能佳,在數(shù)字簽名領(lǐng)域得到廣泛的應(yīng)用。

          TEA算法是由劍橋大學(xué)計算機(jī)實驗室的David WheelerRoger Needham1994年發(fā)明,TEATiny Encryption Algorithm的縮寫,以加密解密速度快,實現(xiàn)簡單著稱。TEA算法每一次可以操作64bit(8byte),采用128bit(16byte)作為key,算法采用迭代的形式,推薦的迭代輪數(shù)是64輪,最少32輪。為解決TEA算法密鑰表攻擊的問題,TEA算法先后經(jīng)歷了幾次改進(jìn),從XTEABLOCK TEA,直至最新的XXTEA。XTEA也稱做TEAN,它使用與TEA相同的簡單運(yùn)算,但四個子密鑰采取不正規(guī)的方式進(jìn)行混合以阻止密鑰表攻擊。Block TEA算法可以對32位的任意整數(shù)倍長度的變量塊進(jìn)行加解密的操作,該算法將XTEA輪循函數(shù)依次應(yīng)用于塊中的每個字,并且將它附加于被應(yīng)用字的鄰字。XXTEA使用跟Block TEA相似的結(jié)構(gòu),但在處理塊中每個字時利用了相鄰字,且用擁有兩個輸入量的MX函數(shù)代替了XTEA輪循函數(shù)。本文所描述的安全機(jī)制采用的加密算法就是TEA算法中安全性能最佳的改進(jìn)版本-XXTEA算法。

          XTEA算法的一輪加密過程如圖1所示:

          XXTEA加密算法的原理及其C語言實現(xiàn)

          XXTEA算法的結(jié)構(gòu)非常簡單,只需要執(zhí)行加法、異或和寄存的硬件即可,且軟件實現(xiàn)的代碼非常短小,具有可移植性,非常適合嵌入式系統(tǒng)應(yīng)用。由于XXTEA算法的以上優(yōu)點(diǎn),可以很好地應(yīng)用于嵌入式RFID系統(tǒng)當(dāng)中。

          XXTEA算法的C語言表達(dá):

          #defineMX(z>>5^y2) + (y>>3^z4)^(sum^y) + (k[p3^e]^z);

          longbtea(long* v, long n, long* k)

          {unsigned long z=v[n-1], y=v[0], sum=0, e, DELTA=0x9e3779b9;long p, q ;

          if (n > 1) {/*加密過程*/

          q = 6 + 52/n;

          while (q-- > 0)

          {sum += DELTA;e = (sum >> 2) 3;

          for (p=0; pn-1; p++)y = v[p+1],z = v[p] += MX;

          y = v[0];z = v[n-1] += MX;}

          return 0 ;

          } else if (n -1) {/*解密過程*/

          n = -n;q = 6 + 52/n;sum = q*DELTA ;

          while (sum != 0) { e = (sum >> 2) 3;

          for (p=n-1; p>0; p--) z = v[p-1], y = v[p] -= MX;

          z = v[n-1];y = v[0] -= MX;sum -= DELTA; }

          return 0; }return 1; }

          上述算法描述中,v表示為運(yùn)算的長整型數(shù)據(jù)的首地址,k為長整型的密鑰的首地址,n表示要要運(yùn)算的組元個數(shù),正表示加密,負(fù)表示解密。N是以32bit為基本單位的組元個數(shù)。

          訂正:對于加密的示意圖,在Xr-1到>>3那里,是不經(jīng)歷異或的運(yùn)算的。



          關(guān)鍵詞: XXTEA加密算法 C語言

          評論


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