跨平台的加密演算法XXTEA的封裝

2021-06-18 10:17:40 字數 1371 閱讀 6857

原文:

xxtea演算法的結構非常簡單,只需要執行加法、異或和寄存的硬體即可,且軟體實現的**非常短小,具有可移植性。

xxtea可對連續記憶體資料進行方便快速的加密解密,且比較安全,但其使用不是很方便,因此有了此次封裝。

封裝好的介面如下:

//

////

created by ****** on 12-7-24.

////

/** 此類是對xxtea官方演算法進行的封裝,xxtea資訊詳見 */

#ifndef xxtea_h

#define xxtea_h#include

"stdlib.h

"#include

"stdio.h

"#include

#ifndef xxtea_type

#define xxtea_type int //

一種32位長的資料型別,因int在32bit和64bit系統中都是32位的,故直接用int

#endif

class

xxtea ;

#endif

加密解密示例**:

char srcbuffer = "

hello world! 你好!";

size_t length = xxtea::xxteagetbufferlength(strlen(srcbuffer) + 1, true

);

char* encodebuffer = new

char

[length];

xxtea_type key[

4] = ;

xxtea::xxteaencode(encodebuffer, srcbuffer, strlen(srcbuffer) +1

, key);

printf(

"encodebuffer: %s\r\n

", encodebuffer);

char* decodebuffer = new

char[xxtea::xxteagetbufferlength(length, false

)]; xxtea::xxteadecode(decodebuffer, encodebuffer, length, key);

printf(

"decodebuffer: %s\r\n

", decodebuffer);

delete encodebuffer;

delete decodebuffer;

示例結果:

XXTEA 加密演算法

需要注意的是,這裡加密的是位元組陣列,而不是字串。因為 c 字串是按照 unicode 編碼儲存的。要加密字串的話,需要用 system.text.encoding.utf8 或者其他編碼器 的 getbytes 方法轉化為位元組陣列,然後才能對其加密,金鑰也是一樣的。金鑰長度是 128 位,也就是...

xxtea 微控制器資料加密演算法

各位大俠在做資料傳輸時,有沒有考慮過把資料加密起來進行傳輸,若在串列埠或者無線中把所要傳的資料加密起來,豈不是增加了通訊的安全性。常用的加密解密演算法比如des rsa等,受限於微控制器的記憶體和運算速度,實現起來比較困難,但一種叫tea的加密演算法特別適合微控制器使用。tea tiny encry...

PHP實現的XXTEA加密解密演算法示例

xxtea 加密實現類 class xxtea s array for i 0 i len 程式設計客棧 i s i pack v v i return w substr implode s 0,n implode s private function str2long s,w private fu...