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. httpcomponents-client-4.3.6 HttpPost的简单使用

    /** * httpcomponents-client-4.3.6 * @author y */ public class HttpUtil { public static String httpPo ...

  2. BZOJ3144 切糕

    http://www.lydsy.com/JudgeOnline/problem.php?id=3144 思路:如果没有D的限制,那一个竖轴都是一个最小割,每个点向更高的点引一条流量为自己权值的边,那 ...

  3. voijs1883 月光的魔法

    背景 影几欺哄了众生了天以外——月儿何曾圆缺 描述 有些东西就如同月光的魔法一般. Luke是爱着vijos的.他想为自己心爱的东西画些什么. 就画N个圆吧.把它们的圆心都固定在x轴上. 圆与圆.为了 ...

  4. javascript遍历Json对象个数

       var data={};     for (var d in data) {         $(data[d]).each(function (i, e) {             aler ...

  5. <转载>模板声明中template <typename T>和template <class T>

    原文地址http://blog.csdn.net/bug07250432/article/details/10150625 在c++Template中很多地方都用到了typename与class这两个 ...

  6. linux之getcwd函数解析

    [lingyun@localhost getcwd]$ cat getcwd.c /********************************************************** ...

  7. PHP计算一个目录文件大小方法

    <?php $dirfile='../hnb'; /** *计算一个目录文件大小方法 *$dirfile:传入文件目录名 **/ function dirSize($dirfile) { $di ...

  8. Oracle与DB2的区别

    系统结构概述 首先,我们需要理解 Oracle 使用的架构,并理解它与 DB2 的不同之处.图 1 展示了 Oracle 的系统结构.将该图与 图 2 进行比较,后者显示了 DB2 的系统结构.在阅读 ...

  9. Android.mk具体解释

    概述     Android.mk文件用来向编译系统描写叙述怎样编译你的源码.更确切地说,该文件事实上就是一个小型的Makefile.由于该文件会被NDK的编译工具解析多次,因此应该尽量降低源码中声明 ...

  10. .NET中反射机制的使用与分析

    .NET中反射机制的使用与分析 [日期:2008-06-30] 来源:  作者:志伟     .NET反射的定义:审查元数据并收集关于它的类型信息的能力. 元数据是一种二进制信息,用以对存储在公共语言 ...