编辑:
2014-11-04
2 TEA 算法
2.1 TEA 算法概况TEA是Tiny Encryption Algorithm的缩写,意为极小型的加密算法。它是由David Wheeler和Roger Needham 在剑桥大学计算机实验室联合研究的[3]。TEA 的特点是算法简单,加密速度极快,抗差分攻击能力强。明文密文块为64 比特,密钥长度为128 比特。算法的描述十分简单。
在 Java Card 应用中,用于加密信息的包主要有[4][5]:javacard.security package 和javacardx.crypto package。前者用于提供安全机制,其中几个重要的接口与类如下: Key 接口,是DESKey、PrivateKey、Pub-licKey 等接口的共同接口;KeyBuilder 类,创建各种安全的key 的工厂;MessageDigest 类,可以将信息做数字签名的对象。后者仅包含了一个接口与一个类:KeyEncryption 接口和Cipher 抽象类[6]。
2.2 加密算法步骤① 64 位的明文数据分成两部分v[0]和v[1]各32 位:y←v[0];z←v[1];delta←0x9E3779B9(黄金数);sum←0;② 128 位的密钥分成4 部分:key[0],key[1],key[2],key[3],各32 位:
a←key[0];b←key[1];c←key[2];d←key[3];③ 对明文数据进行32 次循环迭代计算,迭代算法如下:
sum+=delta;y+=(z<<4)+a^z+sum^(z>>>5)+b;z+=(y<<4)+c^y+sum^(y>>>5)+d;④ 合并加密结果,结束:
v[0]←y;v[1]←z;解密算法的步骤与此类似,只是具体的初始化和循环迭代运算算法不同。
2.3 TEA 算法的Java 语言实现public class TEA{private int key[];∥128 位密钥……public TEA( byte[] key){……key = new int[4];∥把密钥分成四组for(i = 0,j = 0; j < klen; j += 4, i++)key [i] = (key[j]<<24)|(((key[j+1]&0xff)<<16)|(((key[j+2])&0xff)<<8)|((key[j+3])&0xff);……}
……∥加密算法public int[] encipher(int v[]){int y = v[0];int z = v[1];int sum = 0;int delta = 0x9E3779B9;int a = key[0], b = key[1], c = key[2], d = key[3];int n = 32;System.out.println(“y=”+((long)y & 0xffffffffL)+”z=”+((long)z & 0xffffffffL)+”,”+Integer.
toHexString(y)+”:”+Integer.toHexString(z));while(n-- > 0){∥对明文数据进行32 次循环迭代计算sum += delta;y += (z<<4)+a^z+sum^(z>>>5)+b;z += (y<<4)+c^y+sum^(y>>>5)+d;System.out.println(“Sum=”+((long)sum & 0xffffffffL)+”y =”+ (( long) y & 0xffffffffL)) +“z =”+ (( long)z&0xffffffffL));}
v[0] = y;v[1] = z;return v;}
……∥解密算法public int[] decipher(int v[]){int y = v[0];∥将64 位的密文数据分成两组v[0]和v[1]
int z = v[1];∥每组均为32 位int sum = 0xC6EF3720;int delta = 0x9E3779B9;int a = key[0], b = key[1], c = key[2], d = key[3];int n = 32;while(n-- > 0){∥对密文数据进行32 次循环迭代计算z -= (y<<4)+c^y+sum^(y>>>5)+d;y -= (z<<4)+a^z+sum^(z>>>5)+b;sum -= delta;}
v[0] = y;v[1] = z;return v;}
……}
测试用密钥12345678,明文12345678 经加密得到密文65687380734039130。在加解密过程中,加法运算和减法运算用作可逆的操作,轮流运用异或和加法运算使算法具有非线性特性,明文中1 比特的信息扩散到32 位中只需6 次迭代,因此迭代16 轮就可以达到,而TEA 算法迭代次数为32 轮。TEA 算法比DES 算法快三倍,而且可以采用DES 所有的模式运行。
标签:JAVA论文
精品学习网(51edu.com)在建设过程中引用了互联网上的一些信息资源并对有明确来源的信息注明了出处,版权归原作者及原网站所有,如果您对本站信息资源版权的归属问题存有异议,请您致信qinquan#51edu.com(将#换成@),我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。