计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

基于IDEA算法的电子邮件加密与解密的实现(1)

2014-06-14 01:03
导读:计算机应用论文论文,基于IDEA算法的电子邮件加密与解密的实现(1)样式参考,免费教你怎么写,格式要求,科教论文网提供的这篇文章不错: 摘 要 本文结合邮件系统的工作原理,分析了IDEA数据加密算法基
摘 要 本文结合邮件系统的工作原理,分析了IDEA数据加密算法基本原理,描述了VC编程环境下利用IDEA算法实现电子邮件加密与解密的方法,从而保障了邮件传输的安全性。经过测试证明,该方法达到了邮件安全传输的预期效果。 关键字 IDEA;电子邮件;加密;解密1 引言 目前电子邮件是Internet上主要的信息传输手段,也是电子商务应用的主要途径之一。电子邮件在网络上以“存储转发”方式传播,一封电子邮件在传送过程中可能要经过若干个中间主机的转发,途中所留下的拷贝,能被非法用户阅读、截获或者篡改。目前Internet中邮件系统大多实现了邮件收发、管理功能,却无法保障电子邮件安全性、完整性、抗抵赖性、不可否认性等问题。提高邮件系统安全性的主要措施之一是对邮件内容加密,这样邮件即使被他人截收,显示的也是一些杂乱的不能读懂的乱码,但合法用户通过拥有的密钥对邮件解密而正确地阅读邮件,这样就达到了数据保密的功能,大大提高了邮件系统的安全性。2 邮件系统工作原理2.1 邮件系统的构成 一个电子邮件系统包含用户代理,传输代理和协议三大部分。用户代理是一个用户端发信和收信程序;传输代理负责信件交换和传输,又可将其细分为邮件发送传输代理和邮件接收传输代理;协议,包括用于发送邮件的SMTP和用于接收邮件的POP3。[1]2.2 电子邮件的传输过程 (1)发送方邮件管理程序将邮件进行拆分并封装成一个或多个TCP邮包。TCP邮包按照IP协议封装成IP包,并附上目的计算机的IP地址。 (2)根据目的IP地址确定与哪一台计算机相连,若连接成功,便将IP邮包送上网络。 (3)IP邮包在传递过程中,经过路由选择,通过某些主机的存储转发,最后到达接收邮件的目的计算机。 (4)在接收端,将IP邮包收集起来,按照正确的次序将其复原成初始的邮件。3 网络信息加密技术 计算机网络安全问题所涉及的内容非常广泛,ISO7498-2提出了五种计算机安全防护措施:认证、访问控制、数据保密、数据完整性、防止否认,而数据加密是实现所有安全服务的基础。 目前密码体制主要有两大类:一类是对称密码体制,包括序列密码和分组密码,如DES、IDEA算法;另一类是非对称密码体制,包括双钥加密模型和双钥认证模型,如RSA算法[2]。两种密码体制各有优缺点,对称密码体制,密钥管理过于复杂,难以解决对数签名验证的问题,而非对称密码体制,加、解密速度慢,算法实现效率低。 本文结合IDEA算法,描述了VC编程环境下邮件加密和解密的实现过程,保障了邮件传输的安全性。4 IDEA算法简介 IDEA算法是对称密码体制中的一种基于数据块的分组加密算法,整个算法包含子密钥产生、数据加密过程、数据解密过程三部分。该算法规定明文与密文块均为64b,密钥长度为128b,加密与解密相同,只是密钥各异,其基本工作原理如图1所示。图1 IDEA工作原理4.1 数据加密过程 将明文中每64b数据块分成X1,X2,X3和X4四个子块,每一子块16b,令这4个子块作为第一轮迭代的输入,全部共8轮迭代。每轮迭代都是4个子块彼此间及16b的子密钥间进行异或运算、mod 216加法运算、mod(216 1)乘法运算,任何一轮迭代第3和第4个子块互换。最后与4个16b的子密钥进行输出变换,输出Y1~ Y4四个16b密文数据。IDEA算法结构如图2所示。图2 IDEA算法结构4.2 IDEA子密钥产生[3] IDEA算法经过8轮迭代,每轮需要6个子密钥,最后一轮还需4个子密钥,因此共需52个16b子密钥块。输入128b密钥k=k1k2…k128,将其分成8个子密钥,每个子密钥16b,依次为:Z1(1)=k1k2…k16、Z2(1)=k17k18…k32、…、Z6(1)=k81k82…k96、Z1(2)=k97k98…k112、Z2(2)=k113k114…k128; Zi(n)表示第n轮迭代中的第i个子密钥。Z1(1) ~Z6(1)作为第一轮的6个子密钥,剩下的Z1(2) 、Z2(2) 作为第二轮的子密钥。再将k向左旋转移位25b得k′=k26k27…k128k1k2…k25,同样将其分成8个子密钥,前4个Z3(2)、Z4(2)、Z5(2)、Z6(2)正好是第二轮的子密钥,后4个作为第三轮的子密钥。继续向左旋转移位25b,直到52个子密钥生成完毕。4.3 数据解密过程 算法解密过程与加密过程完全一样,只是解密子密钥是由加密子密钥加法逆或乘法逆构成的,且两者一一对应。如解密运算的第一轮用到的6个子密钥依次是:(Z1(9))-1、-Z2(9)、-Z3(9)、(Z4(9))-1、Z5(8)、Z6(8) 。其中-Zi表示Zi mod 216的加法逆元,即-Zi Zi≡0 mod 216;Zi-1表示Zi mod (216 1)的乘法逆元,即ZiZi-1≡1 mod (216 1),其它依此类推。5 IDEA算法抽象类的设计 将IDEA算法抽象成一个C 类CIdea,该类可以直接被应用在需要应用加密技术的软件中。用户可以调用该类提供的接口函数来实现加密/解密功能。下面是CIdea类的文本描述,相应接口函数的实现可参考文献4。class CIdea{private:bit8 UserKey[16]; //加密、解密密钥bit16 EnSubKeys[52]; //加密子密钥bit16 DeSubKeys[52]; void en_key_idea(bit8 *userkey,bit16 *Z);void cipher_idea(bit8 *bu1,bit8 *bu2,bit16 *Z);//加密解密64b数据public:void EnString(unsigned char*,unsigned char*); //加密字符串方法void DeString(unsigned char*,unsigned char*);int IdeaEncrypt(char *f1,char *f2); //加密方法int IdeaDecrypt(char *f1,char *f2);bit16 inv(bit16 x); //乘法求逆void SetKey(unsigned char *);//设置密钥};6 基于IDEA算法的邮件加密和解密实现过程6.1 邮件加密实现 邮件正文加密,首先定义CIdea类对象,调用SetKey()函数提供对称密钥,然后EnString()调用IDEA算法实现邮件加密。该函数首先根据加密密钥UserKey调用en_key_idea()生成加密子密钥块,然后打开邮件正文,获得邮件正文的长度,并用空字符将其补成8倍数的长度,然后将其按每64b依次分块读出并调用cipher_idea()函数加密每个64b组,并将加密后的字符串存储,直到邮件正文字符串全部加密完毕,跳出循环。共2页: 1 [2] 下一页 论文出处(作者):
上一篇:GPRS通用通信系统的服务器端软件开发(1) 下一篇:没有了