基于CAPL实现的XTEA算法

背景

车载通信中,涉及到安全相关的功能,会到各种加密算法,而XTEA是比较常见的一种。
关键词:CAPL、XTEA。

XTEA

TEA,Tiny Encryption Algorithm,微型加密算法,是一种易于描述和执行的块密码。
XTEA,eXtended Tiny Encryption Algorithm,是TEA的改进版。

基于CAPL的算法实现

加密的函数代码示例

void XTEAencrypt(dword rounds,dword v[], dword k[]) 
{ 
  dword  sum=0, delta=0x9e3779b9;
  dword  v0, v1, i; 
  v0=v[0];
  v1=v[1];
  for (i=0; i < rounds; i++) 
  { 
    v0 += (((v1<<4) ^ (v1>>5)) + v1)^(sum+k[sum & 3]); 
    sum += delta; 
    v1 += (((v0<<4) ^ (v0>>5)) + v0)^(sum+k[(sum >> 11) & 3]); 
  } 
  v[0]=v0;
  v[1]=v1;
}

解密的函数代码示例

void XTEAdecrypt(dword rounds,dword v[], dword k[])
{
  dword  v0, v1, i; 
  dword  sum, delta=0x9e3779b9;
  sum=delta*rounds;
  v0=v[0];
  v1=v[1];
  for (i=0; i < rounds; i++) 
  { 
    v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);
    sum -= delta;
    v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
  }   
  v[0]=v0;
  v[1]=v1;  
}

验证

使用以下变量:

  dword  Random[2]={0x01, 0x02};
  dword  Rounds=32;
  dword  Akey[4]={0x02, 0x02, 0x03, 0x04};

执行和打印:

  write("加密前的数据%u,%u",Random[0],Random[1]);
    XTEAencrypt(Rounds,Random,Akey);
  write("加密后的数据%u,%u",Random[0],Random[1]);
    XTEAdecrypt(Rounds,Random,Akey);
  write("解密后的数据%u,%u",Random[0],Random[1]);

结果如下:

   加密前的数据1,2
   加密后的数据1345390024,2801624574
   解密后的数据1,2

我是从下面这两篇中学到算法原理的,好东西,多多分享~:
XTEA加密算法实现过程
TEA、XTEA、XXTEA加密解密算法
解析 TEA 加密算法(C语言、python)

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值