Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void MD5Init (void)
- {
- memset(m_lpszBuffer, 0, 64 );
- m_nCount[0] = m_nCount[1] = 0;
- m_lMD5[0] = MD5_INIT_STATE_0;
- m_lMD5[1] = MD5_INIT_STATE_1;
- m_lMD5[2] = MD5_INIT_STATE_2;
- m_lMD5[3] = MD5_INIT_STATE_3;
- }
- void MD5Update (unsigned char *inBuf, unsigned int inLen)
- {
- register int i, ii;
- int mdi;
- UINT4 in[16];
- mdi = (int)((m_nCount[0] >> 3) & 0x3F);
- if ((m_nCount[0] + ((UINT4)inLen << 3)) < m_nCount[0])
- m_nCount[1]++;
- m_nCount[0] += ((UINT4)inLen << 3);
- m_nCount[1] += ((UINT4)inLen >> 29);
- while (inLen--) {
- m_lpszBuffer[mdi++] = *inBuf++;
- if (mdi == 0x40) {
- for (i = 0, ii = 0; i < 16; i++, ii += 4)
- in[i] = (((UINT4)m_lpszBuffer[ii+3]) << 24) |
- (((UINT4)m_lpszBuffer[ii+2]) << 16) |
- (((UINT4)m_lpszBuffer[ii+1]) << 8) |
- ((UINT4)m_lpszBuffer[ii]);
- Transform (m_lMD5, in);
- mdi = 0;
- }
- }
- }
- void MD5Final (char* cReturnStr)
- {
- unsigned char bits[8];
- int nIndex;
- unsigned int nPadLen;
- const int nMD5Size = 16;
- unsigned char lpszMD5[16];
- char temp[2];
- int i;
- cReturnStr[0]='\0';
- DWordToByte( bits, m_nCount, 8 );
- nIndex = (int)((m_nCount[0] >> 3) & 0x3f);
- nPadLen = (nIndex < 56) ? (56 - nIndex) : (120 - nIndex);
- MD5Update (PADDING, nPadLen);
- MD5Update (bits, 8);
- DWordToByte( lpszMD5, m_lMD5, nMD5Size );
- for (i=0; i < nMD5Size; i++)
- {
- if (lpszMD5[i] == 0) {
- temp[0] = '0';
- temp[1]='0';
- }
- else if (lpszMD5[i] <= 15) {
- sprintf(temp,"0%x",lpszMD5[i]);
- }
- else {
- sprintf(temp,"%x",lpszMD5[i]);
- }
- strcat(cReturnStr,temp);
- }
- lpszMD5[0]='\0';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement