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

2019/7/10 22:43:58

本文主要是介绍VC++ 字符串String MD5计算小工具 VS2008工程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

基于字符串加密的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工程源码下载:点击打开链接



这篇关于VC++ 字符串String MD5计算小工具 VS2008工程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程