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

2022-08-10 15:18:31 字數 2018 閱讀 6512

**

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

tea(tiny encryption algorithm)是一種簡單高效的加密演算法,以加密解密速度快,實現簡單著稱。演算法很簡單,tea演算法每一次可以操作64-bit(8-byte),採用128-bit(16-byte)作為key,演算法採用迭代的形式,推薦的迭代輪數是64輪,最少32輪。目前我只知道qq一直用的是16輪tea。

我之前做過乙個數字的無線對講機,把語音資料加密後傳送,雙方事先規定好公共的金鑰,就可以進行加密和解密了。至於tea演算法速度,在我看來確實很快,我當時用的是16位的msp430微控制器,晶振只有6m,每秒鐘大概可以進行兩三百次加密和解密的操作(一次加密和解密32位元組)。

說到加密,最簡單的方式就是把要傳送的資料和同樣長度的密碼進行異或運算,得到新的資料就是加密後的資料,然後,接收方把加密資料和密碼進行異或就能得到原始資料。但這種異或的方法安全性如何,我也說不清楚。

下面上傳了c++實現的tea演算法,可以在vc裡面除錯看看。我把它改了改,讓它適合微控制器使用,下面的tea.h和tea.c可以包含在你的工程裡面。使用時,根據你所要加密的資料報長度修改巨集定義block_size金鑰的長度是16位元組。資料和金鑰都是存放在陣列裡面的,比如:

//tea金鑰

unsigned char tea_key[16]=

;//資料緩衝區

unsigned char tx_buffer[32];

unsigned char rx_buffer[32];

加密時使用函式:

btea_encrypt(tx_buffer,tea_key);      //tea加密

這樣,陣列tx_buffer裡面的新內容就是加密後的資料。

接收到的密文資料存放在rx_buffer裡面,呼叫下面函式:

decrpyt(rx_buffer,tea_key);      //tea解密

就能得到之前的明文。

/*******************

tea加密解密演算法

*******************/

#include "tea.h"

#define mx (z>>5^y<<2)+(y>>3^z<<4)^(sum^y)+(k[p&3^e]^z)

#define delta 0x9e3779b9

#define s_looptime 1 //5

#define block_size 31 //page_size,根據你所要加密的資料報長度修改此引數(單位:位元組)

/* *key maybe 128bit =16 bytes.

*buf maybe block_size

*/void btea_encrypt( unsigned char* buf, unsigned char* key )}/*

*key maybe 128bit =16bytes.

*buf maybe block_size

inbuf == outbuf == buf

*/void btea_decrpyt( unsigned char* buf, unsigned char* key )

}

#ifndef __tea_h__

#define __tea_h__

//tea加密函式

void btea_encrypt( unsigned char* buf, unsigned char* key );

//tea解密函式

void btea_decrpyt( unsigned char* buf, unsigned char* key );

#endif

資料加密演算法

資料加密演算法 加密將防止資料被檢視或修改,並在原本不安全的通道上提供安全的通訊通道,它達到以下目的 保密性 防止使用者的標識或資料被讀取。資料完整性 防止資料被更改。身份驗證 確保資料發自特定的一方。一 資料加密 編碼演算法列表 常見用於保證安全的加密或編碼演算法如下 1 常用金鑰演算法 金鑰演算...

資料加密演算法

1 常用金鑰演算法 金鑰演算法用來對敏感資料 摘要 簽名等資訊進行加密,常用的金鑰演算法包括 2 單向雜湊演算法 單向雜湊函式一般用於產生訊息摘要,金鑰加密等,常見的有 3 其它資料演算法 其它資料演算法包括一些常用編碼演算法及其與明文 ascii unicode 等 轉換等,如base 64 qu...

資料加密演算法

加密將防止資料被檢視或修改,並在原本不安全的通道上提供安全的通訊通道,它達到以下目的 一 資料加密 編碼演算法列表 常見用於保證安全的加密或編碼演算法如下 1 常用金鑰演算法 金鑰演算法用來對敏感資料 摘要 簽名等資訊進行加密,常用的金鑰演算法包括 2 單向雜湊演算法 單向雜湊函式一般用於產生訊息摘...