http://bbs.mydigit.cn/read.php?tid=545086

#include "reg52.h"
void send_char(unsigned char txd);void printuf(char *str, unsigned char cb) ;
void encrypt(unsigned long *v1, unsigned long *v2, unsigned long *k);    /*tea加密函数定义*/
void decrypt(unsigned long *v1, unsigned long *v2, unsigned long *k);    /*tea解密函数定义*/
unsigned long *key = (unsigned long *)"1234567890abcde\0";               /*常量密钥*/
unsigned ];
unsigned char i;

void InitUART(void)
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    EA = ;
    ES = ;
    TR1 = ;
}

void main()
{
    unsigned long *y1,*y2;
    tea[]=0x31;
    tea[]=0x32;
    tea[]=0x33;
    tea[]=0x34;
    tea[]=0x35;
    tea[]=0x36;
    tea[]=0x37;
    tea[]=0x38;

    InitUART();
    ; i < ; i++)
      send_char(tea);
    send_char();
    y1=(unsigned ];
    y2=(unsigned ];
        encrypt (y1,y2,key) ;
    ; i < ; i++)
        printuf("%x ",tea);
        send_char();
    y1=(unsigned ];
    y2=(unsigned ];
    decrypt(y1,y2,key);
    ; i < ; i++)
        send_char(tea);
    send_char();
    ) ;

}

void encrypt(unsigned long *v1, unsigned long *v2,unsigned long *k)
{
    unsigned , i;
    unsigned long delta=0x9e3779b9;
    unsigned ], b=k[], c=k[], d=k[];
    ; i < ; i++)
    {
        sum += delta;
        y += ((z<<) + a) ^ (z + sum) ^ ((z>>) + b);
        z += ((y<<) + c) ^ (y + sum) ^ ((y>>) + d);
    }
    *v1=y;
    *v2=z;
}

void decrypt(unsigned long *v1,unsigned long *v2, unsigned long *k)
{
    unsigned long y=*v1, z=*v2, sum=0xC6EF3720, i;
    unsigned long delta=0x9e3779b9;
    unsigned ], b=k[], c=k[], d=k[];
    ; i<; i++) {
        z -= ((y<<) + c) ^ (y + sum) ^ ((y>>) + d);
        y -= ((z<<) + a) ^ (z + sum) ^ ((z>>) + b);
        sum -= delta;
    }
    *v1=y;
    *v2=z;
}

// 传送一个字符
void send_char(unsigned char txd)
{
    SBUF = txd;
    while(!TI);    // 等特数据传送
    TI = ;     // 清除数据传送标志
}

// *str内容中遇到%x的内,就会从cb中的值转成十六进显示    开始
code ]  = {', 'A', 'B', 'C', 'D', 'E', 'F'};
void printuf(char *str, unsigned char cb)   //*str内容中遇到%x的内,就会从cb中的值转成十六进显示
{
    idata char *ct = str;
    idata char cx1;
    idata char cx2;
    while (*ct != '\0')
    {
        if (*ct == '%')
        {
            ) == 'x')
            {
                ct += ;
                cx1 = cb / ;
                cx2 = cb % ;
                send_char (hex[cx1]);
                send_char(hex[cx2]);
                continue;
            }

            ) == 'c')
            {
                ct += ;
                send_char(cb);
                continue;
            }

        }

        if (*ct == '\n')
        {
            send_char();
        }

        send_char(*ct);
        ct++;
    }
}
// *str内容中遇到%x的内,就会从cb中的值转成十六进显示 结束

keil TEA的更多相关文章

  1. TEA encryption with 128bit key

    If anyone needs some basic encryption in software, here's one solution. This TEA implementation fits ...

  2. [转]keil使用详解

    第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上.结构性.可读性.可维护性上有明显的优势,因而易学易用.用过 ...

  3. 安装keil MDK5

    昨天买的stm32板子今天就到了,顺丰速度确实很快. 我这是刚开始整STM32,首先需要下载keil MDK,直接杀去keil官网下载,其实对于学习者,我建议大家下载软件能去官网就去官网,尽量少用二道 ...

  4. 使用powershell批量添加Keil和IAR的头文件路径

    在Keil和IAR的工程中,为了使文件结构清晰,通常会设置很多的子文件夹,然后将头文件和源文件放在不同的子文件夹中,这样就需要手动添加这些头文件夹的路径.当工程结构非常复杂时,文件夹的数量就非常多,特 ...

  5. MDK for ARM (keil) 编译后的信息

    文章转自http://blog.csdn.net/gasbi/article/details/6186312 当我们使用Keil对我们的代码进行编译之后,下方Build Output窗口会出现:Pro ...

  6. Keil环境中建立带FreeRTOS的STM32L项目

    本文是网上转载,版权所有. Keil环境中建立带FreeRTOS的STM32L项目 1.先把source文件夹复制至project目录,然后在keil中添加RTOS文件,如图: 其中heap_2.c按 ...

  7. KEIL中启动文件详解(汇编语言)

    原文在此:http://www.cnblogs.com/mddblog/p/4920063.html 概述 在嵌入式系统中,启动文件是整个系统非常关键的部分,它会进行一些底层的初始化,构建程序运行必要 ...

  8. ARM 开发工具 Keil和DS-5的比较。

    http://www.eeboard.com/bbs/thread-25219-1-1.html 如今ARM体系架构的处理器在嵌入式市场上呼风唤雨,从低端的MCU应用到高端的多媒体消费电子,移动设备领 ...

  9. 新手入门 keil MDK5 建立STM32工程

    keil uvison 是用来开发 单片机的,Keil mdk 是用来开发 ARM 的. 芯片型号是:STM32F103RB6 1,新建工程 配置属性 晶振为8M 根据实际晶振选择 生成 HEX 文件 ...

随机推荐

  1. htpasswd.cgi 网页远程修改gerrit ht 认证的密码文件

    在搭建gerrit系统时,一般都会采用apache的.htacces 认证方法 但trac本身并不提供修改密码的功能,修改密码只能通过htpasswd/htpasswd2命令来进行,这的确是一件相当不 ...

  2. ajax 调用后台接口示例

    $(function(){ var _del_time_list = $("select[name='del_time_list']"); var _del_table_name ...

  3. 【转】git 学习笔记( 随时更新中…… 最后更新日期201304281518)--不错

    原文网址:http://blog.csdn.net/yasin_lee/article/details/5975070 GIT 是版本管理的未来!   推荐几个GIT教程网站 http://www-c ...

  4. structs2使用小结2

    回顾之前做过类似structs2的知识点总结 Structs2历史.处理流程及与1.0版本的区别 Structs2配置文件.拦截器.校验等 EL表达式在JS中使用 ${}El表达式不能直接在单独JS文 ...

  5. 3 Sum Closest 解答

    Question Given an array S of n integers, find three integers in S such that the sum is closest to a ...

  6. Yii2 分页类的扩展和listview引用

    Yii2 本身提供了不错分页选项供用户设置,但是实际项目中我们往往需要复杂一些的分页样式,例如下图所示的效果,上下翻页可用和不可用均用图标来替换.

  7. Angular学习笔记(2)——TODO小应用

    Angular学习笔记(2)--TODO小应用 1. 写在前面 之前我们跑了Angular的Hello World,你是不是对它有点感觉了呢?这一篇将结合一个TODO程序来继续学习Angular的用法 ...

  8. 达到XML简单的动态配置

    今天写的XML相关内容:随着上述眼前的小项目(等级类别)由于地图每个级别.因此,让他动态读取XML内容,这样的变化只能看到XML档. 简单的想法:第一次使用UserDefault类写入文件 UserD ...

  9. js转换ascii编码如中文友转换为编码友;可防止乱码

  10. RequireJs 深入理解

    原文   http://www.tuicool.com/articles/jam2Anv RequireJs已经流行很久了,我们在项目中也打算使用它.它提供了以下功能: 声明不同js文件之间的依赖 可 ...