久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7657|回復: 4
收起左側

TEA加密解密C語言源碼

  [復制鏈接]
ID:410427 發表于 2018-10-16 17:57 | 顯示全部樓層 |閱讀模式
加密函數:
btea_encrypt(T_buffer, TEA_key );
TX_buffer是需要發送的數據,經過該函數后,TX_buffer便是加密后的數據。

解密函數:
btea_decrpyt(RX_buffer, TEA_key);
RX_buffer是接收到的加密數據,經過該函數,RX_buffer便是解密后的數據(即實際傳輸數據)

BLOCK_SIZE 要和數據長度相等

單片機源程序如下:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. /*******************
  5.   TEA加密解密算法
  6. *******************/
  7. #define DATA_LEN 32

  8. #define MX (z>>5^y<<2)+(y>>3^z<<4)^(sum^y)+(k[p&3^e]^z)
  9. #define DELTA 0x9e3779b9
  10. #define S_LOOPTIME   1                                //5
  11. #define BLOCK_SIZE   DATA_LEN                //PAGE_SIZE,根據你所要加密的數據包長度修改此參數(單位:字節)

  12. unsigned char TEA_key[16]=
  13. {
  14.   0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
  15.   0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10
  16. };

  17. //數據緩沖區
  18. unsigned char TX_buffer[DATA_LEN];
  19. unsigned char RX_buffer[DATA_LEN];


  20. /*加密時使用函數, buf里面的內容就是加密后的數據,key是加密密鑰*/
  21. void btea_encrypt( unsigned char* buf, unsigned char* key )
  22. {
  23.   unsigned char  n=BLOCK_SIZE/4;
  24.   unsigned long *v=(unsigned long *)buf;
  25.   unsigned long *k=(unsigned long *)key;
  26.   unsigned long z = v[n - 1],y = v[0],sum = 0,e ;
  27.   unsigned char p,q ;
  28.   // Coding Part

  29.   q = S_LOOPTIME + 52 / n ;
  30.   while ( q-- > 0 )
  31.   {
  32.     sum += DELTA ;
  33.     e = sum >> 2 & 3 ;
  34.     for ( p = 0 ; p < n - 1 ; p++ )
  35.       y = v[p + 1],
  36.       z = v[p] += MX;
  37.       y = v[0] ;
  38.     z = v[n - 1] += MX;
  39.   }
  40. }

  41. /*解密時使用函數, buf里面的內容就是解密后的數據,key是解密密鑰*/
  42. void btea_decrpyt( unsigned char* buf, unsigned char* key )
  43. {
  44.   unsigned char n=BLOCK_SIZE/4;
  45.   unsigned long *v=(unsigned long *)buf;
  46.   unsigned long *k=(unsigned long *)key;
  47.   unsigned long z = v[n - 1],y = v[0],sum = 0,e ;
  48.   unsigned char  p,q ;

  49.   //Decoding Part...
  50.   q = S_LOOPTIME + 52 / n ;
  51.   sum = q * DELTA ;
  52.   while ( sum != 0 )
  53.   {
  54.     e = sum >> 2 & 3 ;
  55.     for ( p = n - 1 ; p > 0 ; p-- )
  56.       z = v[p - 1],
  57.       y = v[p] -= MX;
  58.       z = v[n - 1] ;
  59.     y = v[0] -= MX;
  60.             sum -= DELTA ;
  61.   }
  62. }
  63. /************************************************************************************************************/
  64. void CreateBUF(unsigned char *buf)
  65. {
  66.         int i = 0;

  67.         for (i = 0;i < DATA_LEN; i++)
  68.         {
  69.                 buf[i] = rand()%255;
  70.         }
  71. }

  72. void Trans(unsigned char *buf1, unsigned char *buf2)
  73. {
  74.         int i = 0;

  75.         for (i = 0;i < DATA_LEN; i++)
  76.         {
  77.                 buf2[i] = buf1[i];
  78.         }
  79. }

  80. void DIS(unsigned char sts, unsigned char*buf)
  81. {
  82.         int i = 0;
  83.        
  84.         printf("\n");
  85.         switch (sts)
  86.         {
  87.                 case 0:        printf("實際發送數組:");        break;
  88.                 case 1:        printf("加密數據數組:");        break;
  89.                 case 2:        printf("實際接收數組:");        break;
  90.                 default:        break;
  91.         }
  92.         for (i = 0;i < DATA_LEN; i++)
  93.         {
  94.                 printf("%d ", buf[i]);
  95.         }
  96.         printf("\n");
  97. }

  98. int main(void)
  99. {
  100.         srand((time(NULL)));
  101.         CreateBUF(TX_buffer);                                //生成一組隨機數
  102.         DIS(0,TX_buffer);                                        //顯示實際數據

  103.         btea_encrypt(TX_buffer, TEA_key);        //發送數組加密
  104.         DIS(1,TX_buffer);                                        //顯示加密后的數據

  105.         Trans(TX_buffer, RX_buffer);                //模擬信道
  106.         btea_decrpyt(RX_buffer, TEA_key);        //接收數組解密
  107.         DIS(2, RX_buffer);                                        //顯示接收數據
  108.         return 0;
  109. }       
復制代碼

所有資料51hei提供下載:
TEA加密解密.zip (209.98 KB, 下載次數: 73)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:576869 發表于 2019-7-3 10:57 | 顯示全部樓層
能不能下載啊
回復

使用道具 舉報

ID:367273 發表于 2021-8-21 16:28 | 顯示全部樓層
大哥,你這個加密算法,看著和標準的TEA加密算法不大一樣啊,你這個是不是可以實現任意字節數量加密啊
回復

使用道具 舉報

ID:614295 發表于 2022-8-13 15:40 來自觸屏版 | 顯示全部樓層
在其他網站看到一個只能加密7byte以上的簡化版tea加密,本貼這個不知道能否任意個數據加密。
回復

使用道具 舉報

ID:1044553 發表于 2022-9-12 16:23 | 顯示全部樓層
前來學習。不太懂怎么使用的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线精品视频 | 毛片在线观看视频 | 日本在线观看网站 | 又色又爽又黄18网站 | 国产精品第一区 | 日本韩国欧美中文字幕 | 性免费视频 | 欧美午夜精品一区二区三区 | 色哥网| 国产精品久久久久久久免费看 | 久久久精品 | 91欧美日韩| 一区二区三区视频 | 五十路av| 亚洲日本欧美 | 女人高潮特级毛片 | 美女一级片 | 国产日韩一区 | 亚洲一区二区三区中文字幕 | 91午夜精品亚洲一区二区三区 | 午夜aaa | 九一国产精品 | 色妞色视频一区二区三区四区 | 一区免费视频 | 日韩福利片 | 亚洲永久精品视频 | 四虎影院永久免费 | 国产三级视频在线播放 | 日韩精品在线视频 | 日韩精品免费 | 成人免费黄色片 | 欧美a视频| 欧美成人精品欧美一级私黄 | 亚洲成人免费av | www黄色com| 国产一级视频在线观看 | 欧美日韩国产一区 | 黄色激情视频在线观看 | 中文字幕不卡视频 | 91爱视频| 欧美日韩中文字幕 |