淺析TEA算法
在計(jì)算能力有限的嵌入式系統(tǒng)中實(shí)現(xiàn)加、解密算法,不但要求密文難以破解,還對計(jì)算速度、代碼長度的要求苛刻。對稱加密算法相對簡單、實(shí)現(xiàn)容易、速度快。我們在“智能遠(yuǎn)程抄表系統(tǒng)”中,對傳輸數(shù)據(jù)采用了對稱加密TEA算法保護(hù),獲得了理想的效果。
TEA算法介紹
TEA算法是由劍橋大學(xué)計(jì)算機(jī)實(shí)驗(yàn)室的DavidWheeler和RogerNeedham設(shè)計(jì)的,意為微型加密算法,其目的是設(shè)計(jì)一種可以用各種語言實(shí)現(xiàn)的,能在大多數(shù)機(jī)器上運(yùn)行的可靠的加密算法。算法對64bits的明文數(shù)據(jù)塊,用128bits密鑰加密,得到64bits的密文數(shù)據(jù)塊。
TEA采用與DES算法類似的Feistel結(jié)構(gòu),迭代的每次循環(huán)使用加法和移位操作,對明文和密鑰進(jìn)行擴(kuò)散和混亂,實(shí)現(xiàn)明文的非線性變換。TEA密鑰長度和迭代次數(shù)都是DES的兩倍,抗“試錯(cuò)法”攻擊的強(qiáng)度不低于DES算法。算法以32bits的字為運(yùn)算單位,而不是耗費(fèi)計(jì)算能力的逐位運(yùn)算。算法沒有采用DES那樣的轉(zhuǎn)換矩陣,它安全、高效、占用存儲空間少,非常適合在嵌入式系統(tǒng)中應(yīng)用。
下面給出TEA算法的C語言描述:


設(shè)計(jì)者認(rèn)為算法中DELTA的值對算法并無什么影響,只是為了避免不良的取值,推薦DELTA的值取為黃金分割數(shù)(5√-2)/2與232的乘積,取整后的十六進(jìn)制值為0x9e3779B9。TEA算法的迭代次數(shù)可以改變,明文或密鑰的1bit信息擴(kuò)散到32bits中最多需6次迭代,所以迭代16輪可能就夠了,而算法設(shè)計(jì)者推薦的迭代次數(shù)為32輪。





