• 大小: 2.12MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-10-01
  • 语言: C/C++
  • 标签: MD5  

资源简介

MD5算法的C++实现的代码,提供给需要的同学,主要的目的方便自己逆向工程的时候要用到,方便查找。

资源截图

代码片段和文件信息


#include “stdafx.h“

unsigned char PADDING[] = { 
0x80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 };

//在逆向代码的时候,需要关注下面的特征值
void MD5Init(MD5_CTX *context)
{
context->count[0] = 0;
context->count[1] = 0;
context->state[0] = 0x67452301;
context->state[1] = 0xEFCDAB89;
context->state[2] = 0x98BADCFE;
context->state[3] = 0x10325476;
}

void MD5Update(MD5_CTX *context unsigned char *input unsigned int inputlen)
{
unsigned int i = 0 index = 0 partlen = 0;
index = (context->count[0] >> 3) & 0x3F;
partlen = 64 - index;
context->count[0] += inputlen << 3;
if (context->count[0] < (inputlen << 3))
context->count[1]++;
context->count[1] += inputlen >> 29;

if (inputlen >= partlen)
{
memcpy(&context->buffer[index] input partlen);
MD5Transform(context->state context->buffer);
for (i = partlen; i + 64 <= inputlen; i += 64)
MD5Transform(context->state &input[i]);
index = 0;
}
else
{
i = 0;
}
memcpy(&context->buffer[index] &input[i] inputlen - i);
}

void MD5Final(MD5_CTX *context unsigned char digest[16])
{
unsigned int index = 0 padlen = 0;
unsigned char bits[8];
index = (context->count[0] >> 3) & 0x3F;
padlen = (index < 56) ? (56 - index) : (120 - index);
MD5Encode(bits context->count 8);
MD5Update(context PADDING padlen);
MD5Update(context bits 8);
MD5Encode(digest context->state 16);
}

void MD5Encode(unsigned char *output unsigned int *input unsigned int len)
{
unsigned int i = 0 j = 0;
while (j < len)
{
output[j] = input[i] & 0xFF;
output[j + 1] = (input[i] >> 8) & 0xFF;
output[j + 2] = (input[i] >> 16) & 0xFF;
output[j + 3] = (input[i] >> 24) & 0xFF;
i++;
j += 4;
}
}

void MD5Decode(unsigned int *output unsigned char *input unsigned int len)
{
unsigned int i = 0 j = 0;
while (j < len)
{
output[i] = (input[j]) |
(input[j + 1] << 8) |
(input[j + 2] << 16) |
(input[j + 3] << 24);
i++;
j += 4;
}
}

void MD5Transform(unsigned int state[4] unsigned char block[64])
{
unsigned int a = state[0];
unsigned int b = state[1];
unsigned int c = state[2];
unsigned int d = state[3];
unsigned int x[64];

MD5Decode(x block 64);
FF(a b c d x[0] 7 0xd76aa478);
FF(d a b c x[1] 12 0xe8c7b756);
FF(c d a b x[2] 17 0x242070db);
FF(b c d a x[3] 22 0xc1bdceee);
FF(a b c d x[4] 7 0xf57c0faf);
FF(d a b c x[5] 12 0x4787c62a);
FF(c d a b x[6] 17 0xa8304613);
FF(b c d a x[7] 22 0xfd469501);
FF(a b c d x[8] 7 0x698098d8);
FF(d a b c x[9] 12 0x8b44f7af);
FF(c d a b x[10] 17 0xffff5bb1);
FF(b c d a x[11] 22 0x895cd7be);
FF(a b c d x[12] 7 0x6b901122);
FF(d a b c x[13] 12 0xfd987193);
FF(c d a b x[14] 17 0xa679438e);
FF(b

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-08-27 11:09  Md5Demo\
     目录           0  2016-08-27 10:01  Md5Demo\.git\
     文件        2581  2016-08-27 10:01  Md5Demo\.gitattributes
     文件        2389  2016-08-27 10:01  Md5Demo\.gitignore
     文件         643  2016-08-27 10:01  Md5Demo\.git\config
     文件          73  2016-08-27 10:01  Md5Demo\.git\description
     文件          23  2016-08-27 10:01  Md5Demo\.git\HEAD
     目录           0  2016-08-27 10:01  Md5Demo\.git\hooks\
     文件         177  2016-08-27 10:01  Md5Demo\.git\hooks\README.sample
     文件         192  2016-08-27 10:01  Md5Demo\.git\index
     目录           0  2016-08-27 10:01  Md5Demo\.git\info\
     文件         113  2016-08-27 10:01  Md5Demo\.git\info\exclude
     文件         651  2016-08-27 10:05  Md5Demo\.git\ms-persist.xml
     目录           0  2016-08-27 10:01  Md5Demo\.git\objects\
     目录           0  2016-08-27 10:01  Md5Demo\.git\objects\1b\
     文件        1169  2016-08-27 10:01  Md5Demo\.git\objects\1b\c915c5cb7185a9438de28a7b1a7dfe8c01ee7f
     目录           0  2016-08-27 10:01  Md5Demo\.git\objects\1f\
     文件         751  2016-08-27 10:01  Md5Demo\.git\objects\1f\f0c423042b46cb1d617b81efb715defbe8054d
     目录           0  2016-08-27 10:01  Md5Demo\.git\objects\info\
     目录           0  2016-08-27 10:01  Md5Demo\.git\objects\pack\
     目录           0  2016-08-27 10:01  Md5Demo\.git\refs\
     目录           0  2016-08-27 10:01  Md5Demo\.git\refs\heads\
     目录           0  2016-08-27 10:01  Md5Demo\.git\refs\tags\
     目录           0  2016-08-27 10:27  Md5Demo\Debug\
     文件       38912  2016-08-27 11:09  Md5Demo\Debug\Md5Demo.exe
     文件      251164  2016-08-27 11:09  Md5Demo\Debug\Md5Demo.ilk
     文件      527360  2016-08-27 11:09  Md5Demo\Debug\Md5Demo.pdb
     目录           0  2016-08-27 10:01  Md5Demo\ipch\
     目录           0  2016-08-27 10:56  Md5Demo\ipch\md5demo-875c03cc\
     文件     3342336  2016-08-27 10:56  Md5Demo\ipch\md5demo-875c03cc\md5demo-737d68b7.ipch
     目录           0  2016-08-27 10:53  Md5Demo\Md5Demo\
............此处省略29个文件信息

评论

共有 条评论