打印

51单片机可用的AES加解密算法!

[复制链接]
11092|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hugerat|  楼主 | 2007-7-17 21:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    这是一个适用于C51单片机的AES加解密算法,用C语言编写,Keil C uV3编译通过。是我根据网上多见的C++的AES算法改写而成。128bit加解密。
    因为我的项目中要用到AES加解密,网上虽有许多AES的C++或DELPHI的源代码,也有一些C语言的源代码,但都不适用于C51单片机使用(主要是因为都使用了查表法对运算速度进行优化,但因为占用太多内存和代码空间,不能用于C51单片机)。因此本人对这些算法进行了改写,适用于C51单片机,用Keil c编译后,约占2K代码空间,和1K多的内存。一般带有1K字节内存的C51单片机完全可用。但因为没有使用查表法优法,所以运算速度不是特别快,不适用于要对大量数据加解密的场合。此算法在C51 F020单片机中实际使用,运行正常。此算法只提供了128bit的加密级别,因为要增加加密位数,要太多代码和内存,C51单片机基本无法使用,故没有提供。

点此下载
评分
参与人数 1威望 +1 收起 理由
andyliji + 1

相关帖子

沙发
gyt| | 2007-7-18 06:49 | 只看该作者

谢了!

使用特权

评论回复
板凳
hugerat|  楼主 | 2007-7-18 16:35 | 只看该作者

不谢

使用特权

评论回复
地板
conwh| | 2007-7-18 17:10 | 只看该作者

不知道,解密照样读片子

使用特权

评论回复
5
hugerat|  楼主 | 2007-7-23 09:01 | 只看该作者

这个算法不是用来给程序加密的。

是用来给要传输的数据进行加密的。

使用特权

评论回复
6
古道热肠| | 2007-7-23 09:06 | 只看该作者

有共享精神,谢过了

使用特权

评论回复
7
wjc3k| | 2007-7-23 09:25 | 只看该作者

没有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   5
#define BLOCK_SIZE PAGE_SIZE
/* 
*key  maybe 128bit =16 Bytes.
*buf  maybe BLOCK_SIZE
*/
void btea_encrypt( unsigned char* buf, unsigned char* key )
{
  unsigned char  n=BLOCK_SIZE/4;
  unsigned long *v=(unsigned long *)buf;
  unsigned long *k=(unsigned long *)key;
  unsigned long z = v[n - 1],y = v[0],sum = 0,e ;
  unsigned char p,q ;
  // Coding Part 

  q = S_LOOPTIME + 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;
  }
}

/*
*key  maybe 128bit =16Bytes.
*buf  maybe BLOCK_SIZE
inbuf == outbuf == buf
*/
void btea_decrpyt( unsigned char* buf, unsigned char* key )
{
  unsigned char n=BLOCK_SIZE/4;
  unsigned long *v=(unsigned long *)buf;
  unsigned long *k=(unsigned long *)key;
  unsigned long z = v[n - 1],y = v[0],sum = 0,e ;
  unsigned char  p,q ;

  //Decoding Part...
  q = S_LOOPTIME + 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 ;
  }
}
算法描述可在网上搜索。

使用特权

评论回复
8
andyliji| | 2011-2-15 18:10 | 只看该作者
我为什么下不了啊?

使用特权

评论回复
9
加油吧小鱼儿| | 2014-4-18 13:37 | 只看该作者
謝謝了~

使用特权

评论回复
10
jinhuangdishu| | 2014-6-10 10:41 | 只看该作者
怎么下载不了……

使用特权

评论回复
11
mcu430| | 2019-5-5 11:30 | 只看该作者
这个很不错  不知道用的如何?

使用特权

评论回复
12
mcu430| | 2019-5-5 11:31 | 只看该作者
这个很不错  不知道用的           如何?

使用特权

评论回复
13
Joey26| | 2020-7-16 10:10 | 只看该作者
厉害

使用特权

评论回复
14
一路向北lm| | 2020-7-16 13:36 | 只看该作者
一些片子支持ASE 硬件加密

使用特权

评论回复
15
dhxhh| | 2022-4-29 19:32 | 只看该作者
水电费噶啥地方第三方阿斯顿发送到发水电费啥的发生

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

159

帖子

2

粉丝