亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? md5.cpp

?? 從國(guó)外網(wǎng)站上下載的關(guān)于 逆向工程和協(xié)議分析練習(xí) 的一個(gè)分析文檔 對(duì)你的加密與解密很有幫助
?? CPP
字號(hào):
/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
 */

/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
rights reserved.

License to copy and use this software is granted provided that it
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
Algorithm" in all material mentioning or referencing this software
or this function.

License is also granted to make and use derivative works provided
that such works are identified as "derived from the RSA Data
Security, Inc. MD5 Message-Digest Algorithm" in all material
mentioning or referencing the derived work.

RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.

These notices must be retained in any copies of any part of this
documentation and/or software.
 */

#include "stdafx.h"
#include "md5.h"

/* Constants for MD5Transform routine.
 */

static void MD5Transform (UINT4 [4], const unsigned char [64]);
static void Encode (unsigned char *, const UINT4 *, unsigned int);
static void Decode (UINT4 *, const unsigned char *, unsigned int);
static void MD5_memcpy (POINTER, const POINTER, unsigned int);
static void MD5_memset (POINTER, int, unsigned int);

const static unsigned char PADDING[64] = {
  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
};

#define F1(x, y, z) (z ^ (x & (y ^ z)))
#define F2(x, y, z) F1(z, x, y)
#define F3(x, y, z) (x ^ y ^ z)
#define F4(x, y, z) (y ^ (x | ~z))

/* This is the central step in the MD5 algorithm. */
#define MD5STEP(f, w, x, y, z, data, s) ( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
	
/* MD5 initialization. Begins an MD5 operation, writing a new context.
 */
void MD5Init (MD5_CTX *context)
{
  context->count[0] = context->count[1] = 0;
  /* Load magic initialization constants.*/
  context->state[0] = 0x67452301;
  context->state[1] = 0xefcdab89;
  context->state[2] = 0x98badcfe;
  context->state[3] = 0x10325476;
}

/* MD5 block update operation. Continues an MD5 message-digest
  operation, processing another message block, and updating the
  context.
 */
void MD5Update (MD5_CTX *context, const unsigned char *input, unsigned int inputLen)
{
  unsigned int i, index, partLen;

  /* Compute number of bytes mod 64 */
  index = (unsigned int)((context->count[0] >> 3) & 0x3F);

  /* Update number of bits */
  if ((context->count[0] += ((UINT4)inputLen << 3)) < ((UINT4)inputLen << 3))
		context->count[1]++;
  context->count[1] += ((UINT4)inputLen >> 29);

  partLen = 64 - index;

  /* Transform as many times as possible.*/
  if (inputLen >= partLen) {
 	MD5_memcpy((POINTER)&context->buffer[index], (POINTER)input, partLen);
 	MD5Transform (context->state, context->buffer);

 	for (i = partLen; i + 63 < inputLen; i += 64)
   		MD5Transform (context->state, &input[i]);

 	index = 0;
  }
  else
 	i = 0;

  /* Buffer remaining input */
  MD5_memcpy ((POINTER)&context->buffer[index], (POINTER)&input[i],inputLen-i);
}

/* MD5 finalization. Ends an MD5 message-digest operation, writing the
  the message digest and zeroizing the context.
 */
void MD5Final (unsigned char digest[16], MD5_CTX *context)
{
  unsigned char bits[8];
  unsigned int index, padLen;

  /* Save number of bits */
  Encode (bits, context->count, 8);

  /* Pad out to 56 mod 64.*/
  index = (unsigned int)((context->count[0] >> 3) & 0x3f);
  padLen = (index < 56) ? (56 - index) : (120 - index);
  MD5Update (context, PADDING, padLen);

  /* Append length (before padding) */
  MD5Update (context, bits, 8);

  /* Store state in digest */
  Encode (digest, context->state, 16);

  /* Zeroize sensitive information.*/
  MD5_memset ((POINTER)context, 0, sizeof (*context));
}

/* MD5 basic transformation. Transforms state based on block. */
static void MD5Transform (UINT4 state[4], const unsigned char block[64])
{
  UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];

  Decode (x, block, 64);

  MD5STEP(F1, a, b, c, d, x[ 0]+0xd76aa478,  7);
  MD5STEP(F1, d, a, b, c, x[ 1]+0xe8c7b756, 12);
  MD5STEP(F1, c, d, a, b, x[ 2]+0x242070db, 17);
  MD5STEP(F1, b, c, d, a, x[ 3]+0xc1bdceee, 22);
  MD5STEP(F1, a, b, c, d, x[ 4]+0xf57c0faf,  7);
  MD5STEP(F1, d, a, b, c, x[ 5]+0x4787c62a, 12);
  MD5STEP(F1, c, d, a, b, x[ 6]+0xa8304613, 17);
  MD5STEP(F1, b, c, d, a, x[ 7]+0xfd469501, 22);
  MD5STEP(F1, a, b, c, d, x[ 8]+0x698098d8,  7);
  MD5STEP(F1, d, a, b, c, x[ 9]+0x8b44f7af, 12);
  MD5STEP(F1, c, d, a, b, x[10]+0xffff5bb1, 17);
  MD5STEP(F1, b, c, d, a, x[11]+0x895cd7be, 22);
  MD5STEP(F1, a, b, c, d, x[12]+0x6b901122,  7);
  MD5STEP(F1, d, a, b, c, x[13]+0xfd987193, 12);
  MD5STEP(F1, c, d, a, b, x[14]+0xa679438e, 17);
  MD5STEP(F1, b, c, d, a, x[15]+0x49b40821, 22);
  
  MD5STEP(F2, a, b, c, d, x[ 1]+0xf61e2562,  5);
  MD5STEP(F2, d, a, b, c, x[ 6]+0xc040b340,  9);
  MD5STEP(F2, c, d, a, b, x[11]+0x265e5a51, 14);
  MD5STEP(F2, b, c, d, a, x[ 0]+0xe9b6c7aa, 20);
  MD5STEP(F2, a, b, c, d, x[ 5]+0xd62f105d,  5);
  MD5STEP(F2, d, a, b, c, x[10]+0x02441453,  9);
  MD5STEP(F2, c, d, a, b, x[15]+0xd8a1e681, 14);
  MD5STEP(F2, b, c, d, a, x[ 4]+0xe7d3fbc8, 20);
  MD5STEP(F2, a, b, c, d, x[ 9]+0x21e1cde6,  5);
  MD5STEP(F2, d, a, b, c, x[14]+0xc33707d6,  9);
  MD5STEP(F2, c, d, a, b, x[ 3]+0xf4d50d87, 14);
  MD5STEP(F2, b, c, d, a, x[ 8]+0x455a14ed, 20);
  MD5STEP(F2, a, b, c, d, x[13]+0xa9e3e905,  5);
  MD5STEP(F2, d, a, b, c, x[ 2]+0xfcefa3f8,  9);
  MD5STEP(F2, c, d, a, b, x[ 7]+0x676f02d9, 14);
  MD5STEP(F2, b, c, d, a, x[12]+0x8d2a4c8a, 20);
  
  MD5STEP(F3, a, b, c, d, x[ 5]+0xfffa3942,  4);
  MD5STEP(F3, d, a, b, c, x[ 8]+0x8771f681, 11);
  MD5STEP(F3, c, d, a, b, x[11]+0x6d9d6122, 16);
  MD5STEP(F3, b, c, d, a, x[14]+0xfde5380c, 23);
  MD5STEP(F3, a, b, c, d, x[ 1]+0xa4beea44,  4);
  MD5STEP(F3, d, a, b, c, x[ 4]+0x4bdecfa9, 11);
  MD5STEP(F3, c, d, a, b, x[ 7]+0xf6bb4b60, 16);
  MD5STEP(F3, b, c, d, a, x[10]+0xbebfbc70, 23);
  MD5STEP(F3, a, b, c, d, x[13]+0x289b7ec6,  4);
  MD5STEP(F3, d, a, b, c, x[ 0]+0xeaa127fa, 11);
  MD5STEP(F3, c, d, a, b, x[ 3]+0xd4ef3085, 16);
  MD5STEP(F3, b, c, d, a, x[ 6]+0x04881d05, 23);
  MD5STEP(F3, a, b, c, d, x[ 9]+0xd9d4d039,  4);
  MD5STEP(F3, d, a, b, c, x[12]+0xe6db99e5, 11);
  MD5STEP(F3, c, d, a, b, x[15]+0x1fa27cf8, 16);
  MD5STEP(F3, b, c, d, a, x[ 2]+0xc4ac5665, 23);
  
  MD5STEP(F4, a, b, c, d, x[ 0]+0xf4292244,  6);
  MD5STEP(F4, d, a, b, c, x[ 7]+0x432aff97, 10);
  MD5STEP(F4, c, d, a, b, x[14]+0xab9423a7, 15);
  MD5STEP(F4, b, c, d, a, x[ 5]+0xfc93a039, 21);
  MD5STEP(F4, a, b, c, d, x[12]+0x655b59c3,  6);
  MD5STEP(F4, d, a, b, c, x[ 3]+0x8f0ccc92, 10);
  MD5STEP(F4, c, d, a, b, x[10]+0xffeff47d, 15);
  MD5STEP(F4, b, c, d, a, x[ 1]+0x85845dd1, 21);
  MD5STEP(F4, a, b, c, d, x[ 8]+0x6fa87e4f,  6);
  MD5STEP(F4, d, a, b, c, x[15]+0xfe2ce6e0, 10);
  MD5STEP(F4, c, d, a, b, x[ 6]+0xa3014314, 15);
  MD5STEP(F4, b, c, d, a, x[13]+0x4e0811a1, 21);
  MD5STEP(F4, a, b, c, d, x[ 4]+0xf7537e82,  6);
  MD5STEP(F4, d, a, b, c, x[11]+0xbd3af235, 10);
  MD5STEP(F4, c, d, a, b, x[ 2]+0x2ad7d2bb, 15);
  MD5STEP(F4, b, c, d, a, x[ 9]+0xeb86d391, 21);

  state[0] += a;
  state[1] += b;
  state[2] += c;
  state[3] += d;

  /* Zeroize sensitive information.*/
  MD5_memset ((POINTER)x, 0, sizeof (x));
}

/* Encodes input (UINT4) into output (unsigned char). Assumes len is
  a multiple of 4.
 */
static void Encode (unsigned char *output, const UINT4 *input, unsigned int len)
{
  unsigned int i, j;

  for (i = 0, j = 0; j < len; i++, j += 4) {
 	output[j] = (unsigned char)(input[i] & 0xff);
 	output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
 	output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
 	output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
  }
}

/* Decodes input (unsigned char) into output (UINT4). Assumes len is
  a multiple of 4.
 */
static void Decode (UINT4 *output, const unsigned char *input, unsigned int len)
{
  unsigned int i, j;

  for (i = 0, j = 0; j < len; i++, j += 4)
 	output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
   (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
}

/* Note: Replace "for loop" with standard memcpy if possible. 
 */

static void MD5_memcpy (POINTER output, const POINTER input, unsigned int len)
{
  unsigned int i;

  for (i = 0; i < len; i++)
	 output[i] = input[i];
}

/* Note: Replace "for loop" with standard memset if possible.
 */
static void MD5_memset (POINTER output, int value, unsigned int len)
{
  unsigned int i;

  for (i = 0; i < len; i++)
 	((char *)output)[i] = (char)value;
}

void MD5(unsigned char *out,unsigned char *in,int len)
{
	MD5_CTX ctx;

	MD5Init(&ctx);
	MD5Update(&ctx,in,len);
	MD5Final(out,&ctx);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久精品人人做人人爽50路| 91精品1区2区| 最新日韩av在线| 3d动漫精品啪啪1区2区免费 | 欧美精选一区二区| 国产精品乡下勾搭老头1| 亚洲国产乱码最新视频| 久久免费精品国产久精品久久久久 | 亚洲高清视频的网址| 国产日产欧美一区二区三区 | 91麻豆精品国产91久久久资源速度 | 日韩电影一区二区三区四区| 欧美激情综合网| 欧美成人精品1314www| 欧美性色综合网| jlzzjlzz欧美大全| 狠狠色综合日日| 日日摸夜夜添夜夜添亚洲女人| 亚洲天堂久久久久久久| 久久久噜噜噜久久人人看 | 91在线码无精品| 韩国v欧美v亚洲v日本v| 奇米一区二区三区av| 一区二区三区国产精华| 国产精品久久毛片| 国产校园另类小说区| 欧美成人一区二区| 在线成人午夜影院| 欧美亚一区二区| 91美女蜜桃在线| av不卡一区二区三区| 国产成人av电影| 国产精品综合一区二区三区| 日本亚洲天堂网| 日韩成人一级大片| 天堂成人国产精品一区| 亚洲一区二区欧美| 亚洲成人资源网| 亚洲成人动漫在线观看| 艳妇臀荡乳欲伦亚洲一区| 综合亚洲深深色噜噜狠狠网站| 中文字幕av在线一区二区三区| 久久精品这里都是精品| 国产调教视频一区| 国产午夜精品久久久久久免费视 | 风间由美一区二区av101| 国产.欧美.日韩| 国产成人在线网站| 国产91丝袜在线播放九色| 国产精品亚洲人在线观看| 国产成人午夜视频| 国产成人8x视频一区二区| 国产99久久久精品| 99久久综合狠狠综合久久| av午夜一区麻豆| 91猫先生在线| 欧美色欧美亚洲另类二区| 欧美精品亚洲一区二区在线播放| 欧美挠脚心视频网站| 日韩欧美亚洲国产另类| 久久亚洲精品国产精品紫薇| 久久精品欧美日韩| 国产精品青草综合久久久久99| 亚洲视频小说图片| 亚洲女爱视频在线| 五月天久久比比资源色| 另类综合日韩欧美亚洲| 国产成人精品免费网站| 99久久综合99久久综合网站| 在线欧美日韩精品| 91精品国产乱| 国产日韩欧美精品综合| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲va韩国va欧美va精品| 久久国产福利国产秒拍| 丁香激情综合五月| 欧美在线视频不卡| 欧美mv日韩mv| 中文字幕一区二区三区在线观看 | 国产成人高清在线| 91黄色免费看| 欧美大片在线观看一区| 国产精品妹子av| 午夜精品福利一区二区蜜股av| 久久精品国产99国产| 99热在这里有精品免费| 3atv在线一区二区三区| 欧美高清在线一区| 天天色天天操综合| 懂色av中文字幕一区二区三区| 欧美亚洲动漫制服丝袜| 国产日本欧美一区二区| 丝袜亚洲另类欧美| 国产91在线看| 欧美一级xxx| 亚洲视频资源在线| 国产在线精品视频| 欧美亚洲一区二区在线| 国产欧美日韩久久| 污片在线观看一区二区| 成人动漫中文字幕| 日韩欧美在线123| 亚洲精品国产成人久久av盗摄 | 一本大道综合伊人精品热热| 欧美成人激情免费网| 亚洲午夜免费福利视频| 国产成人综合亚洲网站| 欧美一区二区三区成人| 一区二区三区av电影| 成人免费视频app| 欧美一区二区啪啪| 亚洲无线码一区二区三区| av资源站一区| 久久综合久久综合久久综合| 午夜影院在线观看欧美| 97精品久久久久中文字幕| 国产亚洲自拍一区| 毛片一区二区三区| 欧美日韩1234| 一区二区三区在线观看视频| 国产aⅴ综合色| 久久综合中文字幕| 三级一区在线视频先锋| 在线精品视频一区二区三四| 国产精品久久久久久久久晋中| 国产在线视视频有精品| 日韩一区二区三区精品视频| 一二三四区精品视频| 99国产精品视频免费观看| 国产三级精品在线| 国产电影一区在线| 久久久久久亚洲综合| 激情综合色播激情啊| 日韩精品综合一本久道在线视频| 婷婷久久综合九色综合伊人色| 欧美色老头old∨ideo| 亚洲国产精品精华液网站| 在线观看视频一区二区欧美日韩| 亚洲男人的天堂av| 在线观看亚洲a| 亚洲一二三专区| 欧美日韩综合一区| 午夜精品久久久久久久| 91精品国产一区二区三区蜜臀 | 欧美一区永久视频免费观看| 五月天激情综合| 日韩一区二区在线观看视频| 乱一区二区av| 国产日产精品1区| 波多野洁衣一区| 自拍偷拍亚洲综合| 色婷婷激情综合| 一区二区三区成人| 欧美伦理影视网| 免费成人在线网站| 久久五月婷婷丁香社区| 国产成人8x视频一区二区| 中文字幕视频一区| 欧美亚洲高清一区二区三区不卡| 偷窥少妇高潮呻吟av久久免费| 日韩午夜av一区| 国产美女一区二区| 国产精品白丝在线| 欧美午夜精品一区二区蜜桃| 美洲天堂一区二卡三卡四卡视频| 日韩欧美视频一区| 国产99久久久精品| 一区二区三区国产精华| 日韩欧美一区在线观看| 成人免费视频播放| 亚洲国产成人av网| xnxx国产精品| 97精品国产露脸对白| 日韩中文字幕亚洲一区二区va在线| 日韩精品一区二区三区中文不卡| 国产suv精品一区二区三区| 亚洲精品写真福利| 日韩欧美中文字幕公布| 成人ar影院免费观看视频| 亚洲国产综合色| 国产午夜亚洲精品不卡| 欧美午夜电影一区| 国产在线精品一区二区夜色| 亚洲精品国产一区二区精华液| 欧美成人一区二区三区片免费 | 亚洲欧美自拍偷拍色图| 国产精品女同一区二区三区| 欧美午夜电影一区| 国产精品99久久久久久久女警| 亚洲老司机在线| 久久亚洲综合色| 欧美丝袜自拍制服另类| 国产一区二区视频在线播放| 玉米视频成人免费看| 亚洲精品一区二区三区影院| 91美女在线视频| 国产一区二区三区av电影| 亚洲一二三四在线观看| 久久久五月婷婷| 欧美精品第一页|