注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

php asp 高端网站开发 微信网站开发 视频会议软硬件

 
 
 

日志

 
 

AES算法的核心代码VC++调用方法  

2011-10-23 23:18:34|  分类: 加密算法 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
void Caesproject2Dlg::OnBnClickedButton1()//加密按钮按下
{
 int i;
 CString s,s1;//s用来接收明文,s1用来接收密钥
 rijndael rij;//加密类的对象
 mingwen.GetWindowText(s);//从文本框获取明文
 length=s.GetLength();//明文长度length是Caesproject2Dlg类的成员变量
 N=length/16;//每16字节一组,N是Caesproject2Dlg类的成员变量
  if(length%16==0) //作用是当明文长度不是128bit整数倍时调整N值
   {
    N=N;
   }
   else
   {
    length=length+16-length%16;
    N=N+1;
   }
  LPTSTR lpsz = new TCHAR[s.GetLength()+1];
        _tcscpy(lpsz,s);//将明文拷贝到lpsz指向的内存

    if(s.GetLength()%16!=0) //如果明文长度不是128bit的倍数用空格补齐剩余的位
   {
    for(i=0;i<(int)(16-s.GetLength()%16);i++)
    {
     lpsz[length-16+s.GetLength()%16+i]=' ';
    }
   }
 unsigned char *e_bit;//用于指向加密后的密文
 e_bit=new unsigned char [length];

 miyao.GetWindowText(s1);//从文本框中取得密钥
  LPTSTR k_bit = new TCHAR[256];
        _tcscpy(k_bit,s1);//将密钥拷贝到k_bit指向的内存

  rij.set_key((unsigned char *)k_bit,256);//设置密钥
  for(int j=0;j<N;j++)//循环加密N次,每次128bit
  {
   rij.encrypt((unsigned char *)lpsz,e_bit);
   lpsz+=16;
   e_bit+=16;
  }
  lpsz=lpsz-16*N;//明文指针回到明文头
  e_bit=e_bit-16*N;//密文指针回到密文头
  miwen.SetWindowText((LPCTSTR)e_bit);//显示密文
 // TODO: 在此添加控件通知处理程序代码
}
void Caesproject2Dlg::OnBnClickedButton2()//解密按钮按下
{
 CString c,s1;//c用来接收密文,s1用来接收密钥//length密文长度,N分组数都为成员变量
 rijndael rij;//加密类的对象
 miwen.GetWindowText(c);//从文本框取得密文
 N=length/16;//取得组数做为循环次数
 LPTSTR lpsz = new TCHAR[c.GetLength()+1];
    _tcscpy(lpsz,c);//将密文拷贝到lpsz指向的内存
 miyao.GetWindowText(s1);//从文本框获取密钥
  LPTSTR k_bit = new TCHAR[256];
        _tcscpy(k_bit,s1);//将密钥拷贝到k_bit指向的内存

 rij.set_key((unsigned char *)k_bit,256);//设置密钥
 unsigned char *m_bit;//用于指向解密后的明文
 m_bit=new unsigned char [length];
 
  for(int j=0;j<N;j++) //循环解密N次
  {
   rij.decrypt((unsigned char *)lpsz,m_bit);
   m_bit+=16;
   lpsz+=16;
  }
  m_bit=m_bit-16*N;//解密后的明文指针回到明文头
  lpsz=lpsz-16*N;//密文指针回到密文头
  jmmingwen.SetWindowText((LPCTSTR)m_bit);//显示明文

 // TODO: 在此添加控件通知处理程序代码
}
/*说明:Caesproject2Dlg类为对话框类由MFC向导自动生成,需要在Caesproject2Dlg类添加两个成员变量(添加在头文件的类定义中):
int length,N;//length密文长度,N分组数*/
  评论这张
 
阅读(568)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017