DES、AES、TEA加密算法的比较

1.des算法介绍:
des算法具有对称性,既可以用于加密又可以用于解密。对称性带来的一个很大的好处在于硬件实现, des的加密和解密可以用完全相同的硬件来实现。des算法的明文分组是64位,输出密文也是64位。所以密钥的有效位数是56位,加上校验位共64位。总体流程如表1所示:输入的64位明文,先经初始ip变换,形成64位数据,64位数据被分为两部分,分别是l部分和r部分; l和r经过16次迭代,形成新的64位;新的64位数据再经初始逆变换,输出64位密文。初始置换和逆初始置换是简单的移位操作。在迭代过程这一步骤,替代是在密钥控制下进行的,而移位是按固定顺序进行的,它将数据分组作为一个单元来进行变换,相继使用替代法和移位法加密,从而具有增多替代和重新排列的功能。迭代过程是des加密算法的核心部分。
2.aes算法rijndael介绍:
aes算法rijndael密码是一个迭代型分组密码,其分组长度和密码长度都是可变的,分组长度和密码长度可以独立的指定为128比特,192比特或者256比特。aes的加密算法的数据处理单位是字节,128位的比特信息被分成16个字节,按顺序复制到一个4×4的矩阵中,称为状态(state),aes的所有变换都是基于状态矩阵的变换。用nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表2所示)。在轮函数的每一轮迭代中,包括4步变换,分别是字节代换运算(bytesub())、行变换(shiftrows())、列混合(mixcolumns())以及轮密钥的添加变换(addroundkey()),其作用就是通过重复简单的非线形变换、混合函数变换,将字节代换运算产生的非线性扩散,达到充分的混合,在每轮迭代中引入不同的密钥,从而实现加密的有效性
3.des与aes算法比较:
自des算法1977年首次公诸于世以来,学术界对其进行了深入的研究,围绕它的安全性等方面展开了激烈的争论。在技术上,对des的批评主要集中在以下几个方面:
( 1)作为分组密码,des的加密单位仅有64位二进制,这对于数据传输来说太小,因为每个分组仅含8个字符,而且其中某些位还要用于奇偶校验或其他通讯开销。
( 2) des的密钥的位数太短,只有56比特,而且各次迭代中使用的密钥是递推产生的,这种相关必然降低密码体制的安全性,在现有技术下用穷举法寻找密钥已趋于可行。
(3) des不能对抗差分和线性密码分析。迄今为止, des算法中的s盒8个选择函数矩阵的设计原理因美国政府方面的干预,不予公布。从这一方面严格地讲des算法并不是一个真正的公开加密算法。。
( 4) des用户实际使用的密钥长度为56bit,理论上最大加密强度为256。des算法要提高加密强度(例如增加密钥长度),则系统开销呈指数增长。除采用提高硬件功能和增加并行处理功能外,从算法本身和软件技术方面无法提高des算法的加密强度。
相对des算法来说,aes算法无疑解决了上述问题,主要表现在如下几方面:
( 1)运算速度快,在有反馈模式、无反馈模式的软硬件中,rijndael都表现出非常好的性能。
( 2)对内存的需求非常低,适合于受限环境。
( 3) rijndael是一个分组迭代密码,分组长度和密钥长度设计灵活。
( 4) aes标准支持可变分组长度,分组长度可设定为32比特的任意倍数,最小值为128比特,最大值为256比特。
( 5) aes的密钥长度比des大,它也可设定为32比特的任意倍数,最小值为128比特,最大值为256比特,所以用穷举法是不可能破解的。在可预计的将来,如果计算机的运行速度没有根本性的提高,用穷举法破解aes密钥几乎不可能。
( 6) aes算法的设计策略是宽轨迹策略(wide trail strategy, wts)。wts是针对差分分析和线性分析提出的,可对抗差分密码分析和线性密码分析。总之,rijndael算法汇聚了安全性、效率高、易实现性和灵活性等优点,是一种较des更好的算法。
4.tea:
tea(tiny encryption algorithm)是一种简单高效的加密算法,以加密解密速度快,实现简单著称。算法真的很简单,tea算法每一次可以操作64-bit(8-byte),采用128-bit(16-byte)作为key,算法采用迭代的形式,推荐的迭代轮数是64轮,最少32轮。目前我只知道qq一直用的是16轮tea。没什么好说的,先给出c语言的源代码(默认是32轮):
1voidencrypt(unsignedlong*v,unsignedlong*k){ 2unsignedlongy=v[0],z=v[1],sum=0,i;/*setup*/ 3unsignedlongdelta=0x9e3779b9;/*akeyscheduleconstant*/ 4unsignedlonga=k[0],b=k[1],c=k[2],d=k[3];/*cachekey*/ 5for(i=0;i<32;i++){/*basiccyclestart*/ 6sum+=delta; 7y+=((z5)+b); 8z+=((y5)+d);/*endcycle*/ 9} 10v[0]=y; 11v[1]=z; 12} 13 14voiddecrypt(unsignedlong*v,unsignedlong*k){ 15unsignedlongy=v[0],z=v[1],sum=0xc6ef3720,i;/*setup*/ 16unsignedlongdelta=0x9e3779b9;/*akeyscheduleconstant*/ 17unsignedlonga=k[0],b=k[1],c=k[2],d=k[3];/*cachekey*/ 18for(i=0;i<32;i++){/*basiccyclestart*/ 19z-=((y5)+d); 20y-=((z5)+b); 21sum-=delta;/*endcycle*/ 22} 23v[0]=y; 24v[1]=z; 25}

热像仪保养维修小技巧有哪些呢
放大器中的交叉失真波形及传递特性摘要
什么是双速电机
关于GY-30的简介与驱动及如何操作
芯片超人课堂关于高级驾驶辅助系统的四个部分
DES、AES、TEA加密算法的比较
LED电路的3种保护方法
打通AI芯片到大模型训练的算力桥梁,开放加速设计指南强力助推
碳化硅和氮化镓半导体
ESP32-C2开发板Homekit程序烧录示例
微软开放嵌入版.Net源码 免除相关授权费
安立公司 PIM Master™ 荣获 Frost & Sullivan 颁发创新奖
互联网+物联网移动医疗行业四大现状趋势分析
一位谷歌大牛程序员的自述
深入了解Excel中的SUMIF函数
智慧连接 •“筑”就未来|CLAN(科兰)通讯出席第24届CIBIS建筑智能化峰会北京站
Kepware助力物流仓储系统公司实现智能化管理
cpu是什么意思 CPU与PUA的区别
苏宁支付为无锡市民1分钱乘地铁,助力双十一快乐出行
微软Edge浏览器将支持PDF文档搜索