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特点是速度快.效率高,实现也 ...
随机推荐
- 20160416--javaweb之国际化
一:国际化1.国际化的概念:一款软件希望不同的国家和地区的使用者都可以使用,这个时候软件中的一些内容和数据需要根据用户地区信息不同而展示成不同的样子. 2.国际化的组成部分: (1)页面中固定文本元素 ...
- zoj2432 hdoj1423 最长公共上升子序列(LCIS)
zoj2431 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2432 hdoj 1423 http://acm.hdu. ...
- 关于ligerui 中 grid 表格的扩展搜索功能在远程数据加载时无法使用的解决办法
要想使用grid里的扩展搜索功能,除了要引用ligerui主要的js文件外,还必须引入下面的JS文件: 1.Source\demos\filter\ligerGrid.showFilter.js 2. ...
- PHPSession-完全PHP5之session篇
http://blog.csdn.net/masterft/article/details/1640122 1.什么是session? Session的中文译名叫做“会话”,其本来的含义是 ...
- 在office 2010中插入Mathtype出现ctrl+v不能复制的问题
加载项中去掉command for那个即可 详细网址:http://heblue.blog.163.com/blog/static/96325568201375102628405/
- 三、使用Maven构建简单的java项目
前边,我刚搭建了Maven环境,还有给大家推荐了学习资源,这个小节,我们来就来,,简单的玩玩maven. 1.所需工具: 1.Eclipse 2.apache-maven-3.3.9 3. ...
- javascript 内置对象 第17节
<html> <head> <title>内置对象</title> </head> <body> <div>内置对象 ...
- JS模版引擎[20行代码实现模版引擎读后感]
曾经阅读过<只有20行JAVASCRIPT代码, 手把手教你写一个页面模版引擎>这篇文章, 对其中实现模版的想法实在膜拜, 于是有了这篇读后感, 谈谈自己对模版引擎的理解, 以及用自己的语 ...
- 07_MyBatis原始的Dao编写方法
[UserDao.java ] package com.Higgin.Mybatis.dao; import com.Higgin.Mybatis.po.User; public interface ...
- C++ 数组的地址问题学习随笔
二维数组额地址问题学习,本文学习内容参考:http://blog.csdn.net/wwdlk/article/details/6322439 #include<iostream> usi ...