重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

VC++中如何实现ANSI字符串加密与Unicode字符串加密

小编给大家分享一下VC++中如何实现ANSI字符串加密与Unicode字符串加密,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联公司长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为武江企业提供专业的成都网站设计、网站建设武江网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

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

运行效果如下:

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 
}

以上是“VC++中如何实现ANSI字符串加密与Unicode字符串加密”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


文章名称:VC++中如何实现ANSI字符串加密与Unicode字符串加密
网页地址:http://cqcxhl.cn/article/gpopeg.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP