电子发烧友网 > 控制/MCU > 正文

XXTEA加密算法的KEIL C实现

2011年08月25日 17:57 次阅读

 

#include  <string.h>
#include  <stdio.h>
#include  <absacc.h>
#include  <intrins.h>

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

#define  delta     0x9e3779b9

/* 注意:delta的取值是随机的,但是为了避免不良的取值,采取的是
黄金分割数(根号5-2)/2与2的32次方的乘积。为0x9e3779b9。   
在解密中,sum=delta&TImes;round,如:delta&TImes;32=13C6EF3720*/     
//unsigned long buffer[];
//unsigned long keybuffer[]; 

long btea(long* v,char n,long* k);

long  btea(long* v, char n, long* k) 

    unsigned long z=v[n-1], y=v[0], sum=0, e, DELTA=0x9e3779b9;
    long p, q ;
    if (n > 1) 
 {          
 /* Coding Part */
      q = 6 + 52/n;
      while (q-- > 0) {
        sum += DELTA;
        e = (sum >> 2) & 3;
        for (p=0; p<n-1; p++) y = v[p+1], z = v[p] += MX;
        y = v[0];
        z = v[n-1] += MX;
      }
      return 0 ; 
    } 
 else if (n < -1) 
 {  
  /* Decoding Part */
      n = -n;
      q = 6 + 52/n;
      sum = q*DELTA ;
      while (sum != 0) {
        e = (sum >> 2) & 3;
        for (p=n-1; p>0; p--) z = v[p-1], y = v[p] -= MX;
        z = v[n-1];
        y = v[0] -= MX;
        sum -= DELTA;
      }
      return 0;
    }
    return 1;
}

 void  main()
 {
 unsigned long plainbuffer[2];
 unsigned long testbuffer[4];
 unsigned long plain[2]={0x23FF28AA,0xA76B4B04 };
 unsigned long test[4]={0x01122334,0x45566778,0x899AABBC,0xCDDEEFF0};
 unsigned long key[4]={0x01234567,0x89ABCDEF,0x01234567,0x89ABCDEF};

 while(1)
 {
  memcpy(plainbuffer,plain,8);
  memcpy(testbuffer,test,16);
  btea(plainbuffer, 2,key);
  btea(plainbuffer, -2,key);
  btea(testbuffer, 4,key);
  btea(testbuffer, -4,key);
  _nop_;
 // btea(buffer, -2,keybuffer);

  }
}

技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

idea加密算法及原理详解

IDEA加密算法是一个分组长度为64比特的分组密码算法,密钥长度为128比特,由8轮迭代操作实现。每...

发表于 2017-12-11 08:48 877次阅读
idea加密算法及原理详解

rsa加密算法详解与举例说明

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就...

发表于 2017-12-08 17:41 262次阅读
rsa加密算法详解与举例说明

解读保护数据安全的八种软件加密算法

对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥...

发表于 2017-11-28 10:18 2445次阅读
解读保护数据安全的八种软件加密算法

使用Keil C进行51单片机延时程序编写的几点...

应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)...

发表于 2014-08-25 14:46 17722次阅读
使用Keil C进行51单片机延时程序编写的几点...

专家支招:如何确保智能电表的安全性?

随着自动化解决方案在自动抄表系统(AMR)、自动计量系统(AMI)及智能电网基础设施中越来越广泛的部...

发表于 2013-07-02 16:34 1563次阅读
专家支招:如何确保智能电表的安全性?

DES、AES、TEA加密算法的比较

DES 算法具有对称性, 既可以用于加密又可以用于解密。对称性带来的一个很大的好处在于硬件实现, D...

发表于 2011-08-26 10:48 12444次阅读
DES、AES、TEA加密算法的比较

XXTEA加密算法的原理及其C语言实现

在数据的加解密领域,算法分为对称密钥与非对称密钥两种。对称密钥与非对称密钥由于各自的特点,所应用的领...

发表于 2011-08-25 17:59 4707次阅读
XXTEA加密算法的原理及其C语言实现