Advertisement
Decker82

MD5

Jun 17th, 2014
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.60 KB | None | 0 0
  1. void MD5Init (void)
  2. {
  3.  memset(m_lpszBuffer, 0, 64 );
  4.  m_nCount[0] = m_nCount[1] = 0;
  5.  
  6. m_lMD5[0] = MD5_INIT_STATE_0;
  7. m_lMD5[1] = MD5_INIT_STATE_1;
  8. m_lMD5[2] = MD5_INIT_STATE_2;
  9. m_lMD5[3] = MD5_INIT_STATE_3;
  10. }
  11.  
  12. void MD5Update (unsigned char *inBuf, unsigned int inLen)
  13. {
  14.  register int i, ii;
  15.  int mdi;
  16.  UINT4 in[16];
  17.  
  18.  mdi = (int)((m_nCount[0] >> 3) & 0x3F);
  19.  
  20.  if ((m_nCount[0] + ((UINT4)inLen << 3)) < m_nCount[0])
  21.    m_nCount[1]++;
  22.  m_nCount[0] += ((UINT4)inLen << 3);
  23.  m_nCount[1] += ((UINT4)inLen >> 29);
  24.  
  25.  while (inLen--) {
  26.    m_lpszBuffer[mdi++] = *inBuf++;
  27.  
  28.    if (mdi == 0x40) {
  29.      for (i = 0, ii = 0; i < 16; i++, ii += 4)
  30.        in[i] = (((UINT4)m_lpszBuffer[ii+3]) << 24) |
  31.                (((UINT4)m_lpszBuffer[ii+2]) << 16) |
  32.                (((UINT4)m_lpszBuffer[ii+1]) << 8) |
  33.                ((UINT4)m_lpszBuffer[ii]);
  34.      Transform (m_lMD5, in);
  35.      mdi = 0;
  36.    }
  37.  }
  38. }
  39.  
  40. void MD5Final (char* cReturnStr)
  41. {
  42. unsigned char bits[8];
  43. int nIndex;
  44. unsigned int nPadLen;
  45. const int nMD5Size = 16;
  46.  unsigned char lpszMD5[16];
  47. char temp[2];
  48. int i;
  49.  
  50. cReturnStr[0]='\0';
  51.  
  52. DWordToByte( bits, m_nCount, 8 );
  53.  
  54. nIndex = (int)((m_nCount[0] >> 3) & 0x3f);
  55. nPadLen = (nIndex < 56) ? (56 - nIndex) : (120 - nIndex);
  56.  
  57. MD5Update (PADDING, nPadLen);
  58. MD5Update (bits, 8);
  59.  
  60. DWordToByte( lpszMD5, m_lMD5, nMD5Size );
  61.  
  62. for (i=0; i < nMD5Size; i++)
  63. {
  64.  
  65.  if (lpszMD5[i] == 0) {
  66.   temp[0] = '0';
  67.   temp[1]='0';
  68.  }
  69.  else if (lpszMD5[i] <= 15)  {
  70.      sprintf(temp,"0%x",lpszMD5[i]);
  71.  }
  72.  else {
  73.      sprintf(temp,"%x",lpszMD5[i]);
  74.  }
  75.    strcat(cReturnStr,temp);
  76. }
  77. lpszMD5[0]='\0';
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement