找论文网 > 计算机论文 > 计算机应用 >

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

  在电子邮件负责传输的类SMTP中加密响应函数的部分关键代码如下:[5]
void OnCheckEncrypt()
{ CIdea idea; CString temp;
int len=m_strBody.GetLength();//获得邮件正文长度
if(m_btnEncrypt.GetCheck())
{ char*pszKey=m_strKey.GetBuffer(MAX_MAIL_LENGTH);
char*pszBody=m_strBody.GetBuffer(MAX_MAIL_LENGTH);
char*pszTemp=temp.GetBuffer(MAX_MAIL_LENGTH);
pszTemp[len+1]='\0';
idea.SetKey((unsigned char*) pszKey);//提供对称密钥
idea.EnString((unsigned char*) pszBody,(unsigned char*) pszTemp);
m_strAfterEncrypt=temp+"\0";//保存加密后字符串
MessageBox("邮件已被成功加密!");
GetDlgItem(IDC_EDIT_KEY) ->EnableWindow (FALSE);
}
else {GetDlgItem(IDC_EDIT_KEY) ->EnableWindow (TRUE);}
}
6.2 邮件解密实现过程
    解密过程与加密过程基本类似,其具体实现是:先定义CIdea类对象,调用SetKey()设置对称解密密钥,然后DeString()调用IDEA算法进行邮件解密。该函数首先根据解密密钥并调用函数de_key_idea()生成解密子密钥组。双击已接收的对应邮件主题,打开要解密的邮件密文,接着进入一个循环过程:读取要解密的字符串,用空字符将密文补成8倍数的长度,然后将其按每64b分组,并调用cipher_idea()函数解密每个64b分组,并将解密后的字符串存储。直到全部分组解密完毕,跳出循环。
    在电子邮件负责接收的类POP3中解密响应函数的部分代码如下:
void OnButtonDecrypt()
{CIdea idea;CString m_strBody,temp;
//获取密钥和邮件正文,定义并初始化指向密钥、邮件正文和存放密文空间的指针
idea.SetKey((unsigned char *)pszKey);
idea.DeString((unsigned char *)pszBody,(unsigned char *)pszTemp);
temp.ReleaseBuffer();
m_strKey.ReleaseBuffer();m_strBody.ReleaseBuffer();
m_strBody=temp+"\0";MessageBox("信件已被成功解密!");
m_editBody.Clear();
m_editBody.SetWindowText(m_strBody);}
    本系统除了基于IDEA算法的邮件加密、解密模块外,还集成了邮件发送模块和邮件接收模块,分别通过为smtp协议提供支持的CSMTP类,为pop3协议提供支持的CPOP类,格式化邮件头和邮件体的CMailMessage类来实现。
7  结论与性能评价
    我们通过选用IMail Server 构建一台邮件服务器,在内部网和Internet上运行上述邮件加密程序对邮件进行加密,其测试结果如图3所示。
图3  邮件加密
    点击发送邮件按钮将加密后的邮件发送至邮件服务器。运行邮件解密程序,点击接收邮件按钮接收邮件,然后双击邮件主题,用户看到的是一堆乱码,如图4所示。

输入16位对称解密密钥,运行邮件解密程序对接收的邮件解密,可看到上述邮件正文部分显示的乱码又恢复为可识别的字符,如图5所示。非法用户因无法获得正确的密钥而无法正常的阅读邮件。
图5  邮件解密
    上述结果表明邮件加密达到了很好的效果。IDEA算法加密速度快,适应于加密带有大量数据的报文,但开放性差,它要求发送者和接收者在安全通信前商定一个密钥,且该密钥必须妥善保管。若所有用户使用相同的密钥,则将失去保密意义;若使用不同的密钥,则n个人之间需要n(n-1)/2个密钥,密钥将呈线性增长,管理困难。作为一种对称加密算法,由于其本身固有缺陷,很难不被穷尽搜索方法攻击。我们将进一步探索把更好的加密技术应用到网络安全中去。
参考文献
[1]叶树华,高志红.网络编程实用教程[M].北京:人民邮电出版社,2006.10
[2]http://www.longwayis.com/lwyjxt.htm
[3]卢开澄.计算机密码学----计算机网络中的数据保密与安全(第三版)[M].北京:清华大学出版社,2003.12
[4]博嘉科技.Visual C++网络编程实作教程[M].北京:北京希望电子出版社,2001.6
[5]张天津,于志平.电子邮件传输中加密与解密的实现[J].计算机工程,2003,29(4)

共2页: 上一页 [1] 2


VC++与MATLAB接口编程方法与实现
碰撞检测中的K_DOPS算法的研究
工商管理 | 工科论文 | 财务管理 | 管理学 | 公共管理 | 财政税收 | 证券金融 | 会计审计 | 计算机 | 法律论文 | 医药学 | 汉语言文学
社会论文 | 工科论文 | 理科论文 | 文化论文 | 艺术论文 | 文学论文 | 哲学论文 | 政治论文 | 英语论文 | 写作指导 | 计算机应用
www.zlunwen.com 找论文网 ® 版权所有 网站地图