最近因為項目需要使用簡單的加密算法噪珊,是加密后的密文保存在本地凫乖,于是上網(wǎng)找了比較應(yīng)用廣泛的xxtea,本是c++項目但是沒有找到對應(yīng)版本的xxtea,只能用c版本的進(jìn)行開發(fā)。
TEA算法每一次可以操作64bit(8byte),采用128bit(16byte)作為key年碘,算法采用迭代的形式,推薦的迭代輪數(shù)是64輪伐厌,最少32輪旗国。為解決TEA算法密鑰表攻擊的問題,TEA算法先后經(jīng)歷了幾次改進(jìn)蜕琴,從XTEA到BLOCK TEA萍桌,直至最新的XXTEA。XTEA也稱做TEAN凌简,它使用與TEA相同的簡單運算上炎,但四個子密鑰采取不正規(guī)的方式進(jìn)行混合以阻止密鑰表攻擊。最后輸出為base64_encode代碼雏搂。
簡單說下用法
unsigned char encrypt_data = xxtea_encrypt(key, strlen(key), text, &len);
在這里text為用戶名藕施,key為密碼。生成的encrypt_data即可當(dāng)做秘鑰進(jìn)行保存凸郑。
其中由于c的void * 和 char 可以不進(jìn)行安全檢查進(jìn)行轉(zhuǎn)換裳食,而c++是禁止這樣的,所以需要加上主動類型轉(zhuǎn)換即(char*)
char *decrypt_data = xxtea_decrypt(encrypt_data, len, key, &len);
在這里可以用xxtea_decrypt進(jìn)行對本地保存的秘鑰encrypt_data進(jìn)行解密线椰,和用戶輸入的密碼進(jìn)行對比胞谈。