首页 >  vb/vc毕业设计  > 正文

DES算法加密解密实现及应用

本文研究的是DES算法实现及应用。选择该课题的意义在于:为了防止信息不被非法访问或窃取,实现达到该目的功能软件。DES算法是对称的加密算法,具有速度快,执行效率高等优点,它是由IBM公司研制的一种加密算法.本设计实现了该算法并且集成了加密演示,文本文件加密两个功能模块.加密演示模块提供了对DES算法的加解密演示功能。文本文件加密模块提供了对文本文件加密并保存密文的功能。整个设计采用C++语言实现,DES类提供了两个接口,一个加密接口和一个解密接口,对其进行了封装,以便在其他场合可以提供加解密功能。整个应用程序设计的各个功能模块的执行依靠事件驱动,根据不同的事件原因及事件类型执行不同的功能模块。本文是针对DES算法实现及其应用所做的工作,主要描述DES算法实现原理和方法,应用场合示例演示,实现方式和方法以及在此过程中运用到的计算机知识。并通过所编写的程序实现了本文的描述。


加密演示模块
 该模块的主要功能是提供一个加密演示的效果,在输入框中输入明文点确定按钮将显示密文,确定按钮中能智能的检测用户输入的消息是明文还是密文,如果是明文则加密,如果是密文则解谜,体现DES算法的可逆性.对于刚刚生成的密文,我们把它复制下来粘贴到输入框点解密可恢复出明文.其效果图如图3-2所示


该功能模块实现的代码如下:
void DesStringEncrypt::OnBTNRun()
{
 // TODO: Add your control notification handler code here
 bool flage;
 DWORD   time=GetTickCount();
 
    UpdateData(true);
    int strLen=m_strInput.GetLength();
 if (strLen>0)
 {
  strLen = ((strLen+7)>>3)<<3;
  char *buffer=new char[strLen];
     memset(buffer,0,strLen);
  if(m_strDesKey1 == m_strDesKey2&&m_strDesKey2.GetLength()!=0)
  {
   if( m_bRunType==ENCRYPT )  
          flage=m_des.Encrypt(buffer,m_strInput.GetBuffer(0),strLen,m_strDesKey1.GetBuffer(0));
   else
    flage=m_des.Decrypt(buffer,m_strInput.GetBuffer(0),strLen,m_strDesKey1.GetBuffer(0));
   
   if( flage )
   {
    CString strMessage;
    strMessage.Format("%s成功! 用时%u秒。",(m_bRunType==ENCRYPT)?"加密":"解密",(GetTickCount()-

time)/1000);
    MessageBox(strMessage,"提示",MB_ICONINFORMATION);  
   }
  }
  else if (m_strDesKey1.GetLength()==0&&m_strDesKey2.GetLength()==0)
  {
   //使用默认密码加密解密
   CString keyString=KEYSTRING;

   if( m_bRunType==ENCRYPT )  
    flage=m_des.Encrypt(buffer,m_strInput.GetBuffer(0),strLen,keyString.GetBuffer(0));
   else
    flage=m_des.Decrypt(buffer,m_strInput.GetBuffer(0),strLen,keyString.GetBuffer(0));
   
   if( flage )
   {
    CString strMessage;
    strMessage.Format("%s成功! 用时%u秒。",(m_bRunType==ENCRYPT)?"加密":"解密",(GetTickCount()-

time)/1000);
    MessageBox(strMessage,"提示",MB_ICONINFORMATION);  
   }
  }
  else if (m_strDesKey1.GetLength()>0)
  {
   CWindow::ShowMessage("错误:DES密钥不一致! ");
  }
  m_strOutPut.Format("%s",buffer);
  delete []buffer;
 }
 UpdateData(false);

}


以上是本题目部分介绍,若需要完整版或不符合您的要求,请联系客服QQ:242219979

上一篇:第一页

下一篇:基于P2P的局域网文件共享系统设计

相关文章: