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

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

?? md52.c

?? 雜湊法(Hashing)的搜尋與一般的搜尋法(searching)是不一樣的。在雜湊法中
?? C
字號:
/* #include <stdio.h> */
#include "md52.h"
#define ASM

/*
 * This code implements the MD5 message-digest algorithm.  To compute
 * the message digest of a chunk of bytes, declare an MD5Context
 * structure, pass it to MD5Init, call MD5Update as needed on
 * buffers full of bytes, and then call MD5Final, which will fill a
 * supplied 16-byte array with the digest.
 *
 * Equivalent code is available from RSA Data Security, Inc.  This code
 * has been tested against that, and is equivalent, except that you
 * don't need to include two pages of legalese with every copy.
 */

#if LITTLE_ENDIAN
#define byteReverse(buf, len)	/* Nothing */
#else
void byteReverse(unsigned char *buf, unsigned longs);
#ifndef ASM
/*
 * Note: this code is harmless on big-endian machines.
 */
void byteReverse(unsigned char *buf, unsigned longs)
{
	uint32 t;
	do {
		t = (((((buf[3] << 8) | buf[2]) << 8) | buf[1]) << 8) | buf[0];
		*(uint32 *)buf = t;
		buf += 4;
	} while (--longs);
}
#endif
#endif

/*
 * Start MD5 accumulation.  Set bit count to 0 and buffer to mysterious
 * initialization constants.
 */
void MD5Init2(struct MD5Context *ctx)
{
	ctx->buf[0] = 0x67452301;
	ctx->buf[1] = 0xefcdab89;
	ctx->buf[2] = 0x98badcfe;
	ctx->buf[3] = 0x10325476;

	ctx->bits[0] = 0;
	ctx->bits[1] = 0;
}

/*
 * Update context to reflect the concatenation of another buffer full
 * of bytes.
 */
void MD5Update2(struct MD5Context *ctx, unsigned char *buf, unsigned len)
{
	uint32 t;

	/* Update bitcount */

	t = ctx->bits[0];
	if ((ctx->bits[0] = t + ((uint32)len << 3)) < t)
		ctx->bits[1]++;	/* Carry from low to high */
	ctx->bits[1] += len >> 29;

	t = (t >> 3) & 0x3f;	/* Bytes already in shsInfo->data */

	/* Handle any leading odd-sized chunks */

	if ( t ) {
		unsigned char *p = (unsigned char *)ctx->in + t;

		t = 64-t;
		if (len < t) {
			memcpy(p, buf, len);
			return;
		}
		memcpy(p, buf, t);
		byteReverse(ctx->in, 16);
		Transform2(ctx->buf, (uint32 *)ctx->in);
		buf += t;
		len -= t;
	}

	/* Process data in SHS_BLOCKSIZE chunks */

	while (len >= 64) {
		memcpy(ctx->in, buf, 64);
		byteReverse(ctx->in, 16);
		Transform2(ctx->buf, (uint32 *)ctx->in);
		buf += 64;
		len -= 64;
	}

	/* Handle any remaining bytes of data. */

	memcpy(ctx->in, buf, len);
}

/*
 * Final wrapup - pad to 64-byte boundary with the bit pattern 
 * 1 0* (64-bit count of bits processed, MSB-first)
 */
void MD5Final2(unsigned char digest[16], struct MD5Context *ctx)
{
	unsigned count;
	unsigned char *p;

	/* Compute number of bytes mod 64 */
	count = (ctx->bits[0] >> 3) & 0x3F;

	/* Set the first char of padding to 0x80.  This is safe since there is
	   always at least one byte free */
	p = ctx->in + count;
	*p++ = 0x80;

	/* Bytes of padding needed to make 64 bytes */
	count = 64 - 1 - count;

	/* Pad out to 56 mod 64 */
	if (count < 8) {
		/* Two lots of padding:  Pad the first block to 64 bytes */
		memset(p, 0, count);
		byteReverse(ctx->in, 16);
		Transform2(ctx->buf, (uint32 *)ctx->in);

		/* Now fill the next block with 56 bytes */
		memset(ctx->in, 0, 56);
	} else {
		/* Pad block to 56 bytes */
		memset(p, 0, count-8);
	}
	byteReverse(ctx->in, 14);

	/* Append length in bits and transform */
	((uint32 *)ctx->in)[ 14 ] = ctx->bits[0];
	((uint32 *)ctx->in)[ 15 ] = ctx->bits[1];

	Transform2(ctx->buf, (uint32 *)ctx->in);
	memcpy(digest, ctx->buf, 16);
	byteReverse(digest, 4);
}

#ifndef ASM

/* The four core functions - F1 is optimized somewhat */

/* #define F1(x, y, z) (x & y | ~x & z) */
#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 )

/*
 * The core of the MD5 algorithm, this alters an existing MD5 hash to
 * reflect the addition of 16 longwords of new data.  MD5Update blocks
 * the data and converts bytes into longwords for this routine.
 */
void Transform2(uint32 buf[4], uint32 in[16])
{
	register uint32 a, b, c, d;

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

	MD5STEP(F1, a, b, c, d, in[ 0]+0xd76aa478,  7);
	MD5STEP(F1, d, a, b, c, in[ 1]+0xe8c7b756, 12);
	MD5STEP(F1, c, d, a, b, in[ 2]+0x242070db, 17);
	MD5STEP(F1, b, c, d, a, in[ 3]+0xc1bdceee, 22);
	MD5STEP(F1, a, b, c, d, in[ 4]+0xf57c0faf,  7);
	MD5STEP(F1, d, a, b, c, in[ 5]+0x4787c62a, 12);
	MD5STEP(F1, c, d, a, b, in[ 6]+0xa8304613, 17);
	MD5STEP(F1, b, c, d, a, in[ 7]+0xfd469501, 22);
	MD5STEP(F1, a, b, c, d, in[ 8]+0x698098d8,  7);
	MD5STEP(F1, d, a, b, c, in[ 9]+0x8b44f7af, 12);
	MD5STEP(F1, c, d, a, b, in[10]+0xffff5bb1, 17);
	MD5STEP(F1, b, c, d, a, in[11]+0x895cd7be, 22);
	MD5STEP(F1, a, b, c, d, in[12]+0x6b901122,  7);
	MD5STEP(F1, d, a, b, c, in[13]+0xfd987193, 12);
	MD5STEP(F1, c, d, a, b, in[14]+0xa679438e, 17);
	MD5STEP(F1, b, c, d, a, in[15]+0x49b40821, 22);

	MD5STEP(F2, a, b, c, d, in[ 1]+0xf61e2562,  5);
	MD5STEP(F2, d, a, b, c, in[ 6]+0xc040b340,  9);
	MD5STEP(F2, c, d, a, b, in[11]+0x265e5a51, 14);
	MD5STEP(F2, b, c, d, a, in[ 0]+0xe9b6c7aa, 20);
	MD5STEP(F2, a, b, c, d, in[ 5]+0xd62f105d,  5);
	MD5STEP(F2, d, a, b, c, in[10]+0x02441453,  9);
	MD5STEP(F2, c, d, a, b, in[15]+0xd8a1e681, 14);
	MD5STEP(F2, b, c, d, a, in[ 4]+0xe7d3fbc8, 20);
	MD5STEP(F2, a, b, c, d, in[ 9]+0x21e1cde6,  5);
	MD5STEP(F2, d, a, b, c, in[14]+0xc33707d6,  9);
	MD5STEP(F2, c, d, a, b, in[ 3]+0xf4d50d87, 14);
	MD5STEP(F2, b, c, d, a, in[ 8]+0x455a14ed, 20);
	MD5STEP(F2, a, b, c, d, in[13]+0xa9e3e905,  5);
	MD5STEP(F2, d, a, b, c, in[ 2]+0xfcefa3f8,  9);
	MD5STEP(F2, c, d, a, b, in[ 7]+0x676f02d9, 14);
	MD5STEP(F2, b, c, d, a, in[12]+0x8d2a4c8a, 20);

	MD5STEP(F3, a, b, c, d, in[ 5]+0xfffa3942,  4);
	MD5STEP(F3, d, a, b, c, in[ 8]+0x8771f681, 11);
	MD5STEP(F3, c, d, a, b, in[11]+0x6d9d6122, 16);
	MD5STEP(F3, b, c, d, a, in[14]+0xfde5380c, 23);
	MD5STEP(F3, a, b, c, d, in[ 1]+0xa4beea44,  4);
	MD5STEP(F3, d, a, b, c, in[ 4]+0x4bdecfa9, 11);
	MD5STEP(F3, c, d, a, b, in[ 7]+0xf6bb4b60, 16);
	MD5STEP(F3, b, c, d, a, in[10]+0xbebfbc70, 23);
	MD5STEP(F3, a, b, c, d, in[13]+0x289b7ec6,  4);
	MD5STEP(F3, d, a, b, c, in[ 0]+0xeaa127fa, 11);
	MD5STEP(F3, c, d, a, b, in[ 3]+0xd4ef3085, 16);
	MD5STEP(F3, b, c, d, a, in[ 6]+0x04881d05, 23);
	MD5STEP(F3, a, b, c, d, in[ 9]+0xd9d4d039,  4);
	MD5STEP(F3, d, a, b, c, in[12]+0xe6db99e5, 11);
	MD5STEP(F3, c, d, a, b, in[15]+0x1fa27cf8, 16);
	MD5STEP(F3, b, c, d, a, in[ 2]+0xc4ac5665, 23);

	MD5STEP(F4, a, b, c, d, in[ 0]+0xf4292244,  6);
	MD5STEP(F4, d, a, b, c, in[ 7]+0x432aff97, 10);
	MD5STEP(F4, c, d, a, b, in[14]+0xab9423a7, 15);
	MD5STEP(F4, b, c, d, a, in[ 5]+0xfc93a039, 21);
	MD5STEP(F4, a, b, c, d, in[12]+0x655b59c3,  6);
	MD5STEP(F4, d, a, b, c, in[ 3]+0x8f0ccc92, 10);
	MD5STEP(F4, c, d, a, b, in[10]+0xffeff47d, 15);
	MD5STEP(F4, b, c, d, a, in[ 1]+0x85845dd1, 21);
	MD5STEP(F4, a, b, c, d, in[ 8]+0x6fa87e4f,  6);
	MD5STEP(F4, d, a, b, c, in[15]+0xfe2ce6e0, 10);
	MD5STEP(F4, c, d, a, b, in[ 6]+0xa3014314, 15);
	MD5STEP(F4, b, c, d, a, in[13]+0x4e0811a1, 21);
	MD5STEP(F4, a, b, c, d, in[ 4]+0xf7537e82,  6);
	MD5STEP(F4, d, a, b, c, in[11]+0xbd3af235, 10);
	MD5STEP(F4, c, d, a, b, in[ 2]+0x2ad7d2bb, 15);
	MD5STEP(F4, b, c, d, a, in[ 9]+0xeb86d391, 21);

	buf[0] += a;
	buf[1] += b;
	buf[2] += c;
	buf[3] += d;
}
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美色一区| 欧美一区二区三区播放老司机| 欧美大片国产精品| 美女视频黄a大片欧美| 欧美本精品男人aⅴ天堂| 久久se这里有精品| 久久精品一区二区三区av| 成人一道本在线| 亚洲精品国产视频| 在线播放一区二区三区| 精品一区在线看| 国产精品国产三级国产aⅴ无密码| 99re热这里只有精品视频| 亚洲一区二区欧美日韩| 欧美一区二区精品| 国产一区二三区| 自拍av一区二区三区| 欧美日韩午夜在线| 国产一区二区三区四区五区美女| 国产精品乱码久久久久久| 欧美亚洲国产一区在线观看网站| 蜜桃91丨九色丨蝌蚪91桃色| 国产网站一区二区| 欧美日韩一本到| 国产馆精品极品| 亚洲午夜久久久| 一色桃子久久精品亚洲| 欧美精品在线视频| 国产精品资源站在线| 亚洲国产美国国产综合一区二区| 日韩三级伦理片妻子的秘密按摩| 不卡的av电影| 久久精品国产亚洲a| 亚洲欧美日韩系列| 2024国产精品| 欧美理论在线播放| 不卡电影一区二区三区| 日韩不卡免费视频| 亚洲精选视频免费看| 久久久久久久久久久电影| 精品污污网站免费看| 成人精品国产一区二区4080| 日本午夜精品一区二区三区电影| 国产精品久久久久久久久搜平片| 日韩欧美在线观看一区二区三区| 99精品欧美一区二区三区小说 | 91麻豆精东视频| 毛片av中文字幕一区二区| 亚洲三级在线播放| 国产日韩欧美精品综合| 日韩欧美二区三区| 欧美视频第二页| 91色视频在线| 成人美女在线视频| 国产一区二区调教| 欧美aaaaa成人免费观看视频| 自拍偷自拍亚洲精品播放| 久久久久久久久久久电影| 欧美一级淫片007| 欧美狂野另类xxxxoooo| 在线亚洲+欧美+日本专区| 99精品久久99久久久久| 国产精品一二三区| 欧美日韩亚洲综合在线| 91麻豆免费看片| fc2成人免费人成在线观看播放| 国内国产精品久久| 久久99国产乱子伦精品免费| 人禽交欧美网站| 视频一区二区中文字幕| 天堂av在线一区| 天堂成人免费av电影一区| 视频一区欧美精品| 日韩国产精品久久久久久亚洲| 亚洲国产视频一区| 亚洲小说春色综合另类电影| 亚洲一本大道在线| 天天影视涩香欲综合网| 日韩激情一二三区| 日本一区中文字幕| 日本aⅴ精品一区二区三区| 日本视频中文字幕一区二区三区| 亚洲一卡二卡三卡四卡无卡久久| 一区av在线播放| 亚洲国产视频直播| 日韩精品色哟哟| 免费av成人在线| 国产福利精品一区| 高清不卡一二三区| 91一区二区三区在线观看| 色欧美88888久久久久久影院| 91免费视频大全| 在线观看欧美黄色| 欧美一区二区三区啪啪| 久久久久久亚洲综合影院红桃| 国产欧美日韩不卡| 亚洲精品第一国产综合野| 艳妇臀荡乳欲伦亚洲一区| 午夜av电影一区| 精品一区二区三区香蕉蜜桃| 国产成人精品三级| 色悠悠久久综合| 欧美日韩视频在线第一区| 日韩欧美成人一区二区| 国产精品女主播av| 亚洲一级二级在线| 久久精品999| 99久久婷婷国产综合精品| 色综合久久综合| 日韩午夜在线观看| 日韩电影在线观看电影| 免费av成人在线| av在线播放一区二区三区| 欧美日韩dvd在线观看| 精品国产乱码久久| 亚洲男人天堂一区| 久久se精品一区精品二区| 99久久国产综合色|国产精品| 欧美精三区欧美精三区| 久久免费视频一区| 亚洲午夜精品在线| 国产精品资源在线| 欧美日韩在线播放三区| 国产欧美va欧美不卡在线| 亚洲一区在线视频观看| 国产精一区二区三区| 欧美日韩极品在线观看一区| 国产三级精品三级在线专区| 一区二区三区免费| 粉嫩欧美一区二区三区高清影视| 欧美日韩一区在线观看| 中文av字幕一区| 男女男精品视频网| 色婷婷精品大在线视频| 久久久精品日韩欧美| 亚洲成人在线观看视频| aaa亚洲精品一二三区| 精品卡一卡二卡三卡四在线| 亚洲激情第一区| 成人国产精品免费| 欧美tickle裸体挠脚心vk| 亚洲一区二区三区影院| 国产精品一级黄| 日韩欧美三级在线| 国产91清纯白嫩初高中在线观看| 51精品视频一区二区三区| 亚洲免费在线视频| 成人99免费视频| 国产欧美日韩综合精品一区二区| 免费视频一区二区| 欧美人xxxx| 亚洲一线二线三线视频| 91视频免费播放| 亚洲欧洲韩国日本视频| 高清免费成人av| 国产日韩欧美在线一区| 老司机精品视频一区二区三区| 欧美日韩国产精品自在自线| 一区二区三区 在线观看视频| 成人av免费在线播放| 久久久久久夜精品精品免费| 寂寞少妇一区二区三区| 日韩亚洲电影在线| 久久精品国产一区二区| 日韩精品中午字幕| 久久国产夜色精品鲁鲁99| 精品美女在线观看| 国产综合成人久久大片91| 欧美大黄免费观看| 久久99国产精品久久99| 精品国产免费人成在线观看| 国产一区亚洲一区| 欧美经典三级视频一区二区三区| 国产成人免费在线| 国产精品久久看| 色婷婷久久久亚洲一区二区三区 | 成人免费精品视频| 国产精品免费av| 99视频在线精品| 综合久久国产九一剧情麻豆| 91性感美女视频| 亚洲第一福利一区| 欧美片在线播放| 精品系列免费在线观看| 国产欧美一区视频| 色诱亚洲精品久久久久久| 天堂在线亚洲视频| 久久精品欧美一区二区三区麻豆| 91麻豆精品91久久久久久清纯| 天堂资源在线中文精品| 欧美成人一区二区| 成人一区在线看| 亚洲一区二区影院| 日韩一区二区精品在线观看| 国产一区高清在线| 亚洲男人天堂一区| 日韩三级av在线播放| 成人深夜视频在线观看| 亚洲国产成人av网| 国产亚洲va综合人人澡精品|