QQTEA 算法建立在標準 TEA算法的基礎上,使用16輪的加密(這是最低限,推薦應該是32輪)。QQ在使用這個算法的時候,由於需要加密不定長的數據,所以使用了壹些常規的填充辦法和交織算法。
1 填充算法
如果明文本身的長度不是8的倍數,那麽還要進行填充以使其成為8的倍數。以字節為單位,令N=原始字符串+10+填充字節數n,則N應該是8的倍數。
具體的填充方法:第壹個字節為:(random()&0xf8)|n,隨後填充(n+2)個字節random()&0xff ,後面接原始數據,最後填充7 個字節0x00 。
因為使用了不同的隨機數,所以填充的結果使得即使對於相同的明文,密文的結果也會不同。
2 交織算法
消息被分為多個加密單元,每壹個加密單元都是8字節,使用TEA進行加密,加密結果與下壹個加密單元做異或運算後再作為待加密的明文。