VC++ 字符串String MD5计算小工具 VS2008工程

 更新时间:2017年07月23日 10:56:55   投稿:mdxy-dxy  
基于字符串加密的MD5算法,VS2008 VC++,多字节编译工程。主要代码如下,实现了ANSI字符串加密与Unicode字符串加密,需要的朋友可以参考下

基于字符串加密的MD5算法,VS2008 VC++,多字节编译工程。主要代码如下,实现了ANSI字符串加密与Unicode字符串加密。

运行效果如下:

核心代码:

void CEncryptByMd5Dlg::OnButtonOk()  
{ 
  // TODO: Add your control notification handler code here 
  UpdateData(true); 
  unsigned int len=0; 
  char *cTemp =NULL; 
  if(m_bType==0) 
  { 
    len=m_sText.GetLength(); 
    cTemp=(char*)(LPCTSTR)m_sText; 
  } 
  else 
  { 
    len=CStringW(m_sText).GetLength()*2; 
    cTemp=(char*)ANSI2UNICODE(m_sText); 
  } 
  char *cIdentity; 
  CMd5A md5; 
  cIdentity = md5.MDString(cTemp,len); 
  m_sEncrypt = CString(cIdentity); 
  if(m_bUpper==TRUE) 
  { 
    m_sEncrypt.MakeUpper(); 
  } 
  else 
  { 
    m_sEncrypt.MakeLower(); 
  } 
  UpdateData(false); 
} 
 
void CEncryptByMd5Dlg::OnBnClickedBtnCompare() 
{ 
  // TODO: Add your control notification handler code here 
  UpdateData(true); 
  if(m_sEncrypt==m_szMD5_2) 
  { 
    MessageBox(_T("密文比较结果相同!"),_T("比较相同"),MB_OK|MB_ICONINFORMATION); 
  } 
  else 
  { 
    MessageBox(_T("密文比较结果失败!"),_T("比较不同"),MB_OK|MB_ICONERROR); 
  } 
  UpdateData(FALSE); 
} 
 
void CEncryptByMd5Dlg::OnEnChangeEdit1() 
{ 
  // TODO: If this is a RICHEDIT control, the control will not 
  // send this notification unless you override the CDialog::OnInitDialog() 
  // function and call CRichEditCtrl().SetEventMask() 
  // with the ENM_CHANGE flag ORed into the mask. 
  OnButtonOk(); 
  // TODO: Add your control notification handler code here 
} 
 
char * CEncryptByMd5Dlg::Unicode2ANSI(CString strSource) 
{ 
  if (strSource.IsEmpty()) return NULL; 
  char *pBuffer = NULL; 
  int nBufferSize = 0; 
#ifdef _UNICODE  
  nBufferSize = WideCharToMultiByte(CP_ACP, 0, (LPCTSTR)strSource, -1, NULL, 0, NULL, NULL) + 1; 
  pBuffer = new char[nBufferSize]; 
  memset(pBuffer, 0, sizeof(char)*nBufferSize); 
 
  WideCharToMultiByte(CP_ACP, 0, (LPCTSTR)strSource, -1, pBuffer, nBufferSize, NULL, NULL); 
#else  
  nBufferSize = strSource.GetLength() + 1; 
  pBuffer = new char[nBufferSize]; 
  memset(pBuffer, 0, sizeof(char)*nBufferSize); 
 
  strcpy_s(pBuffer, nBufferSize, (LPCTSTR)strSource); 
#endif  
  return pBuffer; 
} 
 
wchar_t * CEncryptByMd5Dlg::ANSI2UNICODE(CString pData) 
{ 
  int nLength = MultiByteToWideChar(CP_ACP, 0, pData, -1, NULL, 0); 
  wchar_t *pwBuffer = new wchar_t[nLength + 1]; 
  memset(pwBuffer, 0, sizeof(wchar_t)*(nLength + 1)); 
  MultiByteToWideChar(CP_ACP, 0, pData, -1, pwBuffer, nLength); 
  return pwBuffer; 
} 
 
void CEncryptByMd5Dlg::OnBnClickedCheckUpper() 
{ 
  OnButtonOk(); 
  // TODO: Add your control notification handler code here 
} 
 
void CEncryptByMd5Dlg::OnBnClickedRadio1() 
{ 
  OnButtonOk(); 
  // TODO: Add your control notification handler code here 
} 
 
void CEncryptByMd5Dlg::OnBnClickedRadio2() 
{ 
  OnButtonOk(); 
  // TODO: Add your control notification handler code here 
}

VS2008 MFC工程源码下载:点击打开链接

相关文章

  • 通过一个小例子来简单理解C语言中的内存空间管理

    通过一个小例子来简单理解C语言中的内存空间管理

    这篇文章主要介绍了通过一个小例子来简单理解C语言中的内存空间管理,涉及到堆和栈等数据结构的基本知识,需要的朋友可以参考下
    2015-11-11
  • C++ 异常的详细介绍

    C++ 异常的详细介绍

    这篇文章主要介绍了C++ 异常的详细介绍的相关资料,希望通过本文大家能够掌握C++异常的使用方法,需要的朋友可以参考下
    2017-09-09
  • C 转移表/转换表的深入分析

    C 转移表/转换表的深入分析

    本篇文章是对c语言中转移表/转换表进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • c语言中的移位运算符

    c语言中的移位运算符

    这篇文章主要介绍了c语言中的移位运算符,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 浅谈C++11中的几种锁

    浅谈C++11中的几种锁

    本文主要介绍了C++11中的几种锁,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C++实现的泛型List类分享

    C++实现的泛型List类分享

    这篇文章主要介绍了C++实现的泛型List类分享,参考C#的List功能实现,需要的朋友可以参考下
    2014-07-07
  • C语言实现宿舍管理系统

    C语言实现宿舍管理系统

    这篇文章主要为大家详细介绍了C语言实现宿舍管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 基于opencv的行人检测(支持图片视频)

    基于opencv的行人检测(支持图片视频)

    本文主要介绍了基于opencv的行人检测(支持图片视频),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • C++实现学生档案管理系统

    C++实现学生档案管理系统

    这篇文章主要为大家详细介绍了C++实现学生档案管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • c++中try catch的用法小结

    c++中try catch的用法小结

    这篇文章主要介绍了c++中try catch的用法小结,需要的朋友可以参考下
    2018-01-01

最新评论