TEA加密算法
TEA加密算法是一種小型的對稱加密解密算法,其加解密速度快,實現(xiàn)簡單、可靠,保證了文件在網(wǎng)絡(luò)傳輸中數(shù)據(jù)的安全,可廣泛應(yīng)用于各種應(yīng)用系統(tǒng),那么我今天就帶大家來認識一下TEA加密算法。

一、TEA加密算法原理
TEA加密算法采用擴散和混亂方法,對64位的明文數(shù)據(jù)塊,用128位密鑰分組進行加密,產(chǎn)生64位的密文數(shù)據(jù)塊,其循環(huán)輪數(shù)可根據(jù)加密強度需要設(shè)定。
加密過程中,加法運算和減法運算用作可逆的操作。算法輪流使用異或運算和加法運算提供非線性特性,雙移位操作使密鑰和數(shù)據(jù)的所有比特重復(fù)地混合,最多16輪循環(huán)就能使數(shù)據(jù)或密鑰的單個比特的變化擴展到接近32比特。
因此,當循環(huán)輪數(shù)達到16輪以上時,TEA加密算法具有很強的抗差分攻擊能力,128比特密鑰長度可以抗擊窮舉搜索攻擊,該算法設(shè)計者推薦算法迭代次數(shù)為32輪。TEA加密算法本身非常簡練,無論采用軟件方式還是硬件方式,實現(xiàn)起來都非常容易。
二、TEA加密算法對文件的加解密實現(xiàn)
1、對文件加密過程實現(xiàn)
TEA加密算法對文件加密的過程可以分為以下3個步驟。
(1)文件的完整讀取
用string[]lines=System.IO.File.ReadAllLines(String)實現(xiàn)打開一個文件,并確保將文件的所有行都讀入一個字符串數(shù)組,關(guān)閉該文件,得到完整的文件內(nèi)容。
(2)文件內(nèi)容、密鑰預(yù)處理
讀取的文件內(nèi)容很可能包含大量的文本信息,這些文本信息可能包含中英文和一些標點符號,由此在進行加密前需要進行統(tǒng)一的編碼格式轉(zhuǎn)換,然后轉(zhuǎn)換成字節(jié)數(shù)組,如:
System.Text.Encodingchs=System.Text.Encoding.GetEncoding( gb2312!);byte[]bytes=chs.GetBytes(String);以便加密可以順利進行。
使用不同的字符編碼得到的字節(jié)數(shù)組不盡相同,例如,使用UTF—8編碼得到的字符串數(shù)組就比使用gb2312編碼的略有膨脹。同樣用該辦法將密鑰轉(zhuǎn)換成字節(jié)數(shù)組。
(3)無符號整數(shù)數(shù)組與字節(jié)數(shù)組互轉(zhuǎn)方法
為了使密鑰和密文更難被破解和方便運用TEA加密算法,在密鑰轉(zhuǎn)換和內(nèi)容轉(zhuǎn)換時設(shè)計了兩項辦法。
<1>字節(jié)數(shù)組轉(zhuǎn)無符號整數(shù)
根據(jù)傳入?yún)?shù)①字節(jié)數(shù)組V,②字節(jié)數(shù)組下標,判斷如果下標加4后長度大于字節(jié)數(shù)組長度返回0;若小于字節(jié)數(shù)組長度,則執(zhí)行如下或運算操作:
uint _ output;
output=(uint)v[i];
output|=(uint)(v[i+1]<<8);
output|=(uint)(v[i+2]<<16);
output|=(uint)(v[i+3]<<24);
returnoutput;
即將字節(jié)數(shù)組中的下標位與下標后一位左移8位后進行或運算,將所得結(jié)果與下標后第二位左移16位后進行或運算,再將結(jié)果與下標后第三位左移24位后進行或運算,最終結(jié)果為一無符號整數(shù)。
<2>無符號整數(shù)轉(zhuǎn)字節(jié)數(shù)組
首先創(chuàng)建長度為4的字節(jié)數(shù)組V,然后將無符號整數(shù)與十六進制的0xFF進行與運算,所得結(jié)果存入V[0];將無符號整數(shù)右移動8位后與0xFF進行與運算,所得結(jié)果存入V[1];將無符號整數(shù)右移動16位后與0xFF進行與運算,所得結(jié)果存入V[2;將無符號整數(shù)右移動24位后與0xFF進行與運算,所得結(jié)果存入V[3];至此完成轉(zhuǎn)換,經(jīng)過驗證,能正確還原字節(jié)數(shù)組。
小知識之對稱加密算法:
對稱加密(也叫私鑰加密)指加密和解密使用相同密鑰的加密算法。有時又叫傳統(tǒng)密碼算法,就是加密密鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密密鑰中推算出來。而在大多數(shù)的對稱算法中,加密密鑰和解密密鑰是相同的,所以也稱這種加密算法為秘密密鑰算法或單密鑰算法。它要求發(fā)送方和接收方在安全通信之前,商定一個密鑰。對稱算法的安全性依賴于密鑰,泄漏密鑰就意味著任何人都可以對他們發(fā)送或接收的消息解密,所以密鑰的保密性對通信性至關(guān)重要。









