TEA算法
我们要讨论的最后一个分组密码加密算法是TEA(Tiny Encryption Algorithm)。到目前为止,我们在前面所呈现的连线图可能会使你得出如下结论:分组密码加密算法必须是复杂的。TEA却能够很好地说明,事实并非如此。
TEA算法使用64位长度的分组和128位长度的密钥。该算法设定基于32位单词的计算结构,其中所有的操作都是内在地模232的,任何第32位之后的二进制位都会被自动地截除。计算的轮数是可变的,但是必须足够大。通常明智的做法是选择32轮以确保安全。不过,TEA算法的每一轮更像Feistel密码结构(类似DES算法那样的结构)的两轮,所以这大约相当于DES算法的64轮,已经很可观了。
分组密码加密算法设计中,在每轮运算的复杂性和需要执行的轮数之间,始终要进行一种内在的权衡。类似DES这样的密码算法力求在二者之间达成平衡。而AES算法则尽可能地减少运算的轮数,其代价就是会有更加复杂的轮函数。某种意义上,TEA算法可以被看做走向了与AES算法设计思路相反的另一个极端,因为TEA算法使用非常简单的轮函数。不过,其轮运算如此简单的直接结果就是,运算的轮数必须足够大才能获得较高的安全水平。图3-7中给出了TEA加密算法的伪码(其中运用了32轮运算),其中"《"是左移位(非循环)操作,而"》"是右移位(非循环)操作。

关于TEA算法,有种有意思的情况值得引起注意,那就是这个算法不是Feistel密码结构,所以需要分别独立地加密和解密例程。不过,TEA算法在尽可能地接近Feistel密码结构,虽然实际上它并不是--TEA算法使用加法和减法取代了异或运算。即便如此,对于TEA算法来说,需要分别独立地加密和解密例程这件事并不是一个太大的问题,毕竟所需的代码行是如此之少,而且即使执行很多轮次,该算法也仍然是相当高效的。图3-8给出了TEA的解密算法,此处仍设定其执行32轮运算。

对于TEA算法,存在一种稍微有点儿晦涩的相关密钥攻击(见参考文献[163])。也就是说,如果密码分析者了解到两个TEA消息的加密密钥是以某种非常特殊的方式相互关联的,就可以恢复出明文。在绝大多数环境中,这都是一种低概率的攻击,兴许你可以放心地忽略不计。但是,如果你担心的正是这样一种攻击行为,那么还有一种TEA算法的稍微复杂点的变种,称为扩展TEA,或简称为XTEA(见参考文献[218]),该扩展算法可以解决上述潜在的问题。此外,还有TEA的简化版本,称为简版TEA,或简称为STEA,当然这个简版算法非常脆弱,主要用于阐述一些特定类型的攻击手段(见参考文献[208])。
TEA算法的更多相关文章
- 利用TEA算法进行数据加密
TEA(Tiny Encryption Algorithm)是一种小型的对称加密解密算法,最初是由剑桥计算机实验室的 David Wheeler 和 Roger Needham 在 1994 年设计. ...
- 【搬运】Tea算法Java实现工具类
最近在做数据加密,目标是实现平台app的数据安全性,所以准备使用AES+Base64进行加密,适逢一个特长的json串AES加密不了,于是在谷歌了各种算法,判断是否合用,参见 各种加密算法比较 一文中 ...
- 【常见加密方法】Base64编码&Tea算法简介
Base64编码 [Base64编码是什么] Base64是一种基于64个可打印字符来表示二进制数据的表示方法. ——维基百科 Base64,顾名思义,是基于64种可视字符的编码方式.这64种符号由A ...
- 数据的加密传输——单片机上实现TEA加密解密算法
各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线中把所要传的数据加密起来,岂不是增加了通信的安全性.常用的加密解密算法比如DES.RSA等,受限于单片机的内存和运算速度,实 ...
- TEA,XXTEA介绍,对称加密
总结:在使用加密的时候,我们可以加入随机数,这样相同的明文,每次加密后得到不同的密文,同时可以在密文中加入密文有效期,控制密文的有效时间长度. 针对有的功能扩展使用,很好的思想. TEA对 64 位数 ...
- TEA(Tiny Encryption Algorithm)
简介 TEA是一种简单高效的加解密算法,以速度快,实现简单著称.TEA算法每一次可以操作64-bit数据,采用128-bit作为key,算法采用迭代的形式,推荐的迭代轮数是64,最少32. 代码(默认 ...
- TEA加密
TEA(Tiny Encryption Algorithm)是一种小型的对称加密解密算法,支持128位密码,与BlowFish一样TEA每次只能加密/解密8字节数据.TEA特点是速度快.效率高,实现也 ...
- TEA加密算法的C/C++实现
TEA(Tiny Encryption Algorithm) 是一种简单高效的加密算法,以加密解密速度快,实现简单著称.算法真的很简单,TEA算法每一次可以操作64-bit(8-byte),采用128 ...
- Tea加密算法和XxTea加密算法
TEA(Tiny Encryption Algorithm)是一种小型的对称加密解密算法,支持128位密码,与BlowFish一样TEA每次只能加密/解密8字节数据.TEA特点是速度快.效率高,实现也 ...
随机推荐
- iis的路径
每次打开iis管理器查看iis指定路径下的文件过于麻烦,而且iis管理器耗资源,以下是iis的路径,以及其对应在本地磁盘的地址 SP2013\Sites\SharePoint - 80\_contro ...
- PHP session 失效不传递的解决办法
PHP中,session不能传递到下一个页面去,一般有两种情况: 我们先写个php文件:<?=phpinfo()?>, 传到服务器去看看服务器的参数配置. 转到session部分,看到se ...
- ISA2006 下建立VPN连接时出现“错误800”时的解决办法
[转载]http://social.microsoft.com/Forums/zh-CN/9cfa0c06-0f46-44cb-9e8f-8eba1c3821ba/vpn-vpn800 重启Routi ...
- 获取通讯录的信息(关于iOS9.0之后新的框架-ContactFramework)
转载自:http://my.oschina.net/u/2340880/blog/511995?p={{totalPage}} 一.引言 在以前iOS开发中,涉及联系人相关的编程,代码都非常繁琐,并且 ...
- Autolayout的在storyboard警告和错误
警告 控件的frame不匹配所添加的约束, 比如比如约束控件的宽度为100, 而控件现在的宽度是110 错误 缺乏必要的约束, 比如只约束了宽度和高度, 没有约束具体的位置 两个约束冲突, 比如 1个 ...
- SDL实现限制帧速
很多人都在SDL_PollEvent和SDL_WaitEvent之间纠结.前者会带来更好的帧数表现,但是CPU占用极大,可以直接吃掉一个核心.后者则基本不占用CPU,但是帧数会受到影响.有没有办法使两 ...
- 转JSONObject put,accumulate,element的区别
public Object put (Object key, Object value) 将value映射到key下.如果此JSONObject对象之前存在一个value在这个key下,当前的 ...
- java之sleep、wait、yield、join、notify乱解
① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类. sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是 ...
- 《精通CSS-高级Web标准解决方案》阅读计划
第一周 第1章 基础知识 1 第2章 为样式找到应用目标 1 第3章 可视化格式模型 1 第4章 背景图像效果 1 第二周 第5章 对链接应用样式 1 第6章 对列表应用样 ...
- Linux网络设置高级指南
from:http://www.oschina.net/question/23734_117144 Linux网络设置高级指南 本文面向的是被Linux复杂的有线无线网络架构弄得头昏脑胀:或者被网上半 ...