If anyone needs some basic encryption in software, here's one solution. This TEA implementation fits within less than 700 bytes. It's based on original TEA. P89LPC901 needs 300ms for 32 iterations. Compiled with "OPTIMIZE (9,SIZE)".

#define _DELTA    0x9E3779B9
#define _ITER     32
                                /* _ITER = the number of iterations.*/
                                /* 32 is ample, 16 is sufficient,   */
                                /* as few as eight should be OK.    */
#define _SUM      0xC6EF3720
/********************************************************************/
/* Global variables for encryption                                  */
/********************************************************************/
unsigned long int v0,v1;          /* encrypted/decrypted data    */

volatile unsigned long int code
    k0=0x1234aaaa,                /* 128 bit key                */
    k1=0x5678bbbb,                /* hard coded in internal     */
    k2=0x9abc4321,                /* flash memory               */
    k3=0xdef0ffff;                /* Same key used by host      */

/********************************************************************/
/*                                                                  */
/* TEA : The Tiny Encryption Algorithm (TEA)                        */
/*       ba David Wheeler and Roger Needham at the Computer         */
/*         Laboratory of Cambridge University                       */
/*       More info: http://www.simonshepherd.supanet.com/tea.htm    */
/*                                                                  */
/* TEA_decipher - decryption procedure                              */
/*                uses global variables                             */
/*                                                                  */
/* Source ported to Keil C51 by Marko Pavlin                        */
/********************************************************************/
void TEA_decipher(void)
{
    unsigned long int sum=_SUM, delta=_DELTA;
    unsigned char n = _ITER;

)
   {
      v1 -= (v0 << )+k2 ^ v0+sum ^ (v0 >> )+k3;
      v0 -= (v1 << )+k0 ^ v1+sum ^ (v1 >> )+k1;
      sum -= delta;
   }
}

/********************************************************************/
/*                                                                  */
/* TEA : The Tiny Encryption Algorithm (TEA)                        */
/*                                                                  */
/* TEA_encipher - encryption procedure                              */
/*                uses global variables                             */
/*                                                                  */
/********************************************************************/
void TEA_encipher(void)
{
   unsigned ,delta=_DELTA;
   unsigned char n=_ITER;

   )
   {
      sum += delta;
      v0 += (v1 << )+k0 ^ v1+sum ^ (v1 >> )+k1;
      v1 += (v0 << )+k2 ^ v0+sum ^ (v0 >> )+k3;
   }
}

Variables are global. If there's enough memory available, use pointer parameters for key and data (adds about 400 bytes for pointer opertions).

Works with 16 bit (unsigned int), too. In this case replace constants with:

#define _DELTA    0x9E37
#define _SUM      0xC6EF

But key in this case is only 64bit.

TEA encryption with 128bit key的更多相关文章

  1. SQL Server安全(8/11):数据加密(Data Encryption)

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  2. GSM cell phone calls use outdated encryption that can now be cracked with rainbow tables on a PC

    Decrypting GSM phone calls Motivation. GSM telephony is the world’s most popular communication techn ...

  3. mysql表空间加密 keyring encryption

    从5.7.11开始,mysql开始支持物理表空间的加密,它使用两层加密架构.包括:master key 和 tablespace key master key用于加密tablespace key,加密 ...

  4. TEA加密算法java版

    这个算法简单,而且效率高,每次可以操作8个字节的数据,加密解密的KEY为16字节,即包含4个int数据的int型数组,加密轮数应为8的倍数,一般比较常用的轮数为64,32,16,推荐用64轮. 源代码 ...

  5. [JavaSecurity] - AES Encryption

    1. AES Algorithm The Advanced Encryption Standard (AES), also as known as Rijndael (its original nam ...

  6. Overview and Evaluation of Bluetooth Low Energy: An Emerging Low-Power Wireless Technology

    转自:http://www.mdpi.com/1424-8220/12/9/11734/htm Sensors 2012, 12(9), 11734-11753; doi:10.3390/s12091 ...

  7. AESwithJCE http://www.coderanch.com/how-to/content/AES_v1.html

    Using AES with Java Technology By Rags SrinivasJune 2003 In September 2000, the National Institute o ...

  8. 【openwrt】再设置

    https://wiki.openwrt.org/zh-cn/doc/uci/network https://wiki.openwrt.org/zh-cn/doc/uci/wireless https ...

  9. [转载] TLS协议分析 与 现代加密通信协议设计

    https://blog.helong.info/blog/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/?from=time ...

随机推荐

  1. Linux kernel API的查看

    一般来说Linux上查看一些函数API的说明咱们可以man一下.man 2是syscall,man 3是一些库的函数API. 以下是man sections的一些说明 The table below ...

  2. MySQL强制性操作

    1.强制索引FORCE INDEX SELECT * FROM TABLE1 FORCE INDEX (FIELD1) … 只使用建立在FIELD1上的索引,而不使用其它字段上的索引. 2.忽略索引 ...

  3. The end of other

    The end of other For language training our Robots want to learn about suffixes. In this task, you ar ...

  4. Spring HTTP invoker 入门

    一.简介 Spring开发团队意识到RMI服务和基于HTTP的服务(如,Hessian)之间的空白.一方面,RMI使用JAVA标准的对象序列化机制,很难穿透防火墙.另一方面,Hessian/Burla ...

  5. poj 3190 Stall Reservations 贪心 + 优先队列

    题意:给定N头奶牛,每头牛有固定的时间[a,b]让农夫去挤牛奶,农夫也只能在对应区间对指定奶牛进行挤奶, 求最少要多少个奶牛棚,使得在每个棚内的奶牛的挤奶时间不冲突. 思路:1.第一个想法就是贪心,对 ...

  6. hiberbate的工作原理

    hibernate 简介:hibernate是一个开源框架,它是对象关联关系映射的框架,它对JDBC做了轻量级的封装,而我们java程序员可以使用面向对象的思想来操纵数据库.hibernate核心接口 ...

  7. oracle查询优化

    1. 排序合理查询条件 Oracle自下而上分析顺序WHERE收条,从优化性能的角度.它建议,这些条件将能够过滤掉大量行书写的WHERE在条款结束, 之间的连接条件置于其它WHERE子句之前,即对易排 ...

  8. js获取某个标签中的信息

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  9. Android应用切换皮肤功能实现

    原文地址:http://www.eoeandroid.com/thread-318159-1-1.html 现在大多数android应用都支持切换皮肤的功能.比如千千静听,墨迹天气等等.本文介绍两种切 ...

  10. [汇编学习笔记][第十三章int指令]

    第十三章int指令 13.1 int指令 格式: int n, n 为中断类型码 可以用int指令调用任何一个中断的中断处理程序(简称中断例程). 13.4 BIOS和DOS 所提供的中断例程 BIO ...