千家信息网

基于字符串加密MD5算法的示例分析

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要介绍了基于字符串加密MD5算法的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。基于字符串加密的MD5算法,VS20
千家信息网最后更新 2025年02月04日基于字符串加密MD5算法的示例分析

这篇文章主要介绍了基于字符串加密MD5算法的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

基于字符串加密的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 }

感谢你能够认真阅读完这篇文章,希望小编分享的"基于字符串加密MD5算法的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0