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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? md5.c

?? MPEG-4編解碼的實現(包括MPEG4視音頻編解碼)
?? C
字號:
/*
 * 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 "config_unix.h"
#include "config_win32.h"
#include "md5.h"

/*
 * Constants for MD5Transform routine.
 */
#define S11 7
#define S12 12
#define S13 17
#define S14 22
#define S21 5
#define S22 9
#define S23 14
#define S24 20
#define S31 4
#define S32 11
#define S33 16
#define S34 23
#define S41 6
#define S42 10
#define S43 15
#define S44 21

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
};

/*
 * F, G, H and I are basic MD5 functions.
 */
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define I(x, y, z) ((y) ^ ((x) | (~z)))

/*
 * ROTATE_LEFT rotates x left n bits.
 */
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))

/*
 * FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. Rotation is
 * separate from addition to prevent recomputation.
 */
#define FF(a, b, c, d, x, s, ac) { \
 (a) += F ((b), (c), (d)) + (x) + (uint32_t)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
  }
#define GG(a, b, c, d, x, s, ac) { \
 (a) += G ((b), (c), (d)) + (x) + (uint32_t)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
  }
#define HH(a, b, c, d, x, s, ac) { \
 (a) += H ((b), (c), (d)) + (x) + (uint32_t)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
  }
#define II(a, b, c, d, x, s, ac) { \
 (a) += I ((b), (c), (d)) + (x) + (uint32_t)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
  }

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

	ASSERT((len % 4) == 0);

	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 (uint32_t). Assumes len is a
 * multiple of 4.
 */
static void 
Decode(uint32_t * output, unsigned char *input, unsigned int len)
{
	unsigned int    i, j;

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

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

	Decode(x, block, 64);

	/* Round 1 */
	FF(a, b, c, d, x[0], S11, 0xd76aa478);	/* 1 */
	FF(d, a, b, c, x[1], S12, 0xe8c7b756);	/* 2 */
	FF(c, d, a, b, x[2], S13, 0x242070db);	/* 3 */
	FF(b, c, d, a, x[3], S14, 0xc1bdceee);	/* 4 */
	FF(a, b, c, d, x[4], S11, 0xf57c0faf);	/* 5 */
	FF(d, a, b, c, x[5], S12, 0x4787c62a);	/* 6 */
	FF(c, d, a, b, x[6], S13, 0xa8304613);	/* 7 */
	FF(b, c, d, a, x[7], S14, 0xfd469501);	/* 8 */
	FF(a, b, c, d, x[8], S11, 0x698098d8);	/* 9 */
	FF(d, a, b, c, x[9], S12, 0x8b44f7af);	/* 10 */
	FF(c, d, a, b, x[10], S13, 0xffff5bb1);	/* 11 */
	FF(b, c, d, a, x[11], S14, 0x895cd7be);	/* 12 */
	FF(a, b, c, d, x[12], S11, 0x6b901122);	/* 13 */
	FF(d, a, b, c, x[13], S12, 0xfd987193);	/* 14 */
	FF(c, d, a, b, x[14], S13, 0xa679438e);	/* 15 */
	FF(b, c, d, a, x[15], S14, 0x49b40821);	/* 16 */

	/* Round 2 */
	GG(a, b, c, d, x[1], S21, 0xf61e2562);	/* 17 */
	GG(d, a, b, c, x[6], S22, 0xc040b340);	/* 18 */
	GG(c, d, a, b, x[11], S23, 0x265e5a51);	/* 19 */
	GG(b, c, d, a, x[0], S24, 0xe9b6c7aa);	/* 20 */
	GG(a, b, c, d, x[5], S21, 0xd62f105d);	/* 21 */
	GG(d, a, b, c, x[10], S22, 0x2441453);	/* 22 */
	GG(c, d, a, b, x[15], S23, 0xd8a1e681);	/* 23 */
	GG(b, c, d, a, x[4], S24, 0xe7d3fbc8);	/* 24 */
	GG(a, b, c, d, x[9], S21, 0x21e1cde6);	/* 25 */
	GG(d, a, b, c, x[14], S22, 0xc33707d6);	/* 26 */
	GG(c, d, a, b, x[3], S23, 0xf4d50d87);	/* 27 */
	GG(b, c, d, a, x[8], S24, 0x455a14ed);	/* 28 */
	GG(a, b, c, d, x[13], S21, 0xa9e3e905);	/* 29 */
	GG(d, a, b, c, x[2], S22, 0xfcefa3f8);	/* 30 */
	GG(c, d, a, b, x[7], S23, 0x676f02d9);	/* 31 */
	GG(b, c, d, a, x[12], S24, 0x8d2a4c8a);	/* 32 */

	/* Round 3 */
	HH(a, b, c, d, x[5], S31, 0xfffa3942);	/* 33 */
	HH(d, a, b, c, x[8], S32, 0x8771f681);	/* 34 */
	HH(c, d, a, b, x[11], S33, 0x6d9d6122);	/* 35 */
	HH(b, c, d, a, x[14], S34, 0xfde5380c);	/* 36 */
	HH(a, b, c, d, x[1], S31, 0xa4beea44);	/* 37 */
	HH(d, a, b, c, x[4], S32, 0x4bdecfa9);	/* 38 */
	HH(c, d, a, b, x[7], S33, 0xf6bb4b60);	/* 39 */
	HH(b, c, d, a, x[10], S34, 0xbebfbc70);	/* 40 */
	HH(a, b, c, d, x[13], S31, 0x289b7ec6);	/* 41 */
	HH(d, a, b, c, x[0], S32, 0xeaa127fa);	/* 42 */
	HH(c, d, a, b, x[3], S33, 0xd4ef3085);	/* 43 */
	HH(b, c, d, a, x[6], S34, 0x4881d05);	/* 44 */
	HH(a, b, c, d, x[9], S31, 0xd9d4d039);	/* 45 */
	HH(d, a, b, c, x[12], S32, 0xe6db99e5);	/* 46 */
	HH(c, d, a, b, x[15], S33, 0x1fa27cf8);	/* 47 */
	HH(b, c, d, a, x[2], S34, 0xc4ac5665);	/* 48 */

	/* Round 4 */
	II(a, b, c, d, x[0], S41, 0xf4292244);	/* 49 */
	II(d, a, b, c, x[7], S42, 0x432aff97);	/* 50 */
	II(c, d, a, b, x[14], S43, 0xab9423a7);	/* 51 */
	II(b, c, d, a, x[5], S44, 0xfc93a039);	/* 52 */
	II(a, b, c, d, x[12], S41, 0x655b59c3);	/* 53 */
	II(d, a, b, c, x[3], S42, 0x8f0ccc92);	/* 54 */
	II(c, d, a, b, x[10], S43, 0xffeff47d);	/* 55 */
	II(b, c, d, a, x[1], S44, 0x85845dd1);	/* 56 */
	II(a, b, c, d, x[8], S41, 0x6fa87e4f);	/* 57 */
	II(d, a, b, c, x[15], S42, 0xfe2ce6e0);	/* 58 */
	II(c, d, a, b, x[6], S43, 0xa3014314);	/* 59 */
	II(b, c, d, a, x[13], S44, 0x4e0811a1);	/* 60 */
	II(a, b, c, d, x[4], S41, 0xf7537e82);	/* 61 */
	II(d, a, b, c, x[11], S42, 0xbd3af235);	/* 62 */
	II(c, d, a, b, x[2], S43, 0x2ad7d2bb);	/* 63 */
	II(b, c, d, a, x[9], S44, 0xeb86d391);	/* 64 */

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

	/*
	 * Zeroize sensitive information.
	 */
	memset((unsigned char *) x, 0, sizeof(x));
}

/**
 * MD5Init:
 * @context: MD5 context to be initialized.
 * 
 * Initializes MD5 context for the start of message digest computation.
 **/
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;
}

/**
 * MD5Update:
 * @context: MD5 context to be updated.
 * @input: pointer to data to be fed into MD5 algorithm.
 * @inputLen: size of @input data in bytes.
 * 
 * MD5 block update operation. Continues an MD5 message-digest operation,
 * processing another message block, and updating the context.
 **/

void 
MD5Update(MD5_CTX * context, 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] += ((uint32_t) inputLen << 3)) < ((uint32_t) inputLen << 3)) {
		context->count[1]++;
	}
	context->count[1] += ((uint32_t) inputLen >> 29);

	partLen = 64 - index;

	/* Transform as many times as possible.  */
	if (inputLen >= partLen) {
		memcpy((unsigned char *) & context->buffer[index], (unsigned char *) 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 */
	if ((inputLen - i) != 0) {
		memcpy((unsigned char *) & context->buffer[index], (unsigned char *) & input[i], inputLen - i);
	}
}

/**
 * MD5Final:
 * @digest: 16-byte buffer to write MD5 checksum.
 * @context: MD5 context to be finalized.
 * 
 * Ends an MD5 message-digest operation, writing the the message
 * digest and zeroing the context.  The context must be initialized
 * with MD5Init() before being used for other MD5 checksum calculations.
 **/

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.
	 */
	memset((unsigned char *) context, 0, sizeof(*context));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
捆绑调教美女网站视频一区| 91精品国产91久久久久久一区二区 | 91精品国产色综合久久不卡蜜臀| 亚洲伊人伊色伊影伊综合网 | 91高清在线观看| 亚洲欧洲成人av每日更新| 99在线热播精品免费| 日韩一区中文字幕| 91国在线观看| 天堂va蜜桃一区二区三区漫画版| 6080午夜不卡| 国产一区二区免费在线| 中文一区二区完整视频在线观看| www.亚洲色图| 亚洲国产精品久久艾草纯爱| 日韩欧美中文一区| 国产99久久精品| 亚洲美女视频一区| 91麻豆精品国产自产在线| 国产一区二区三区日韩| 国产精品大尺度| 欧美日韩激情一区| 国产精品一区免费在线观看| 国产精品国产精品国产专区不蜜 | 成人网在线免费视频| 亚洲精品写真福利| 日韩免费视频一区二区| 国产成人欧美日韩在线电影| 亚洲一区av在线| 欧美精品一区视频| 99re成人精品视频| 五月天婷婷综合| 国产欧美日韩久久| 精品视频1区2区| 久久精品999| 亚洲精品国产精品乱码不99| 日韩欧美中文一区二区| 成人一级黄色片| 日韩va欧美va亚洲va久久| 亚洲国产精品传媒在线观看| 欧美三级电影网| 国产成人超碰人人澡人人澡| 亚洲成人一二三| 中文字幕欧美一| 精品欧美一区二区久久| 91成人国产精品| 国产一区二区美女| 五月激情六月综合| 亚洲日本va在线观看| 久久久久久影视| 欧美日韩在线三级| 97久久精品人人做人人爽| 国产自产2019最新不卡| 天天影视色香欲综合网老头| 日韩美女精品在线| 国产亚洲欧美在线| 日韩一区二区三区视频| 欧美综合一区二区| 欧美日韩1234| 99riav久久精品riav| 国产成人精品免费看| 老司机精品视频导航| 亚洲成人激情社区| 亚洲精品精品亚洲| 国产精品成人免费在线| 国产日产欧产精品推荐色| 日韩一区二区三区在线| 欧美高清你懂得| 欧美综合一区二区| 欧美亚洲高清一区| 在线日韩一区二区| 91美女在线看| 色综合天天综合在线视频| 国产成人在线色| 国产99精品国产| 国产精品一区不卡| 国内国产精品久久| 国产一区二区三区黄视频 | 久久精品亚洲麻豆av一区二区 | 夜夜爽夜夜爽精品视频| 日韩美女视频一区二区| 亚洲欧美中日韩| 亚洲欧洲日本在线| 亚洲视频在线观看三级| 亚洲人成精品久久久久| 亚洲丝袜另类动漫二区| 亚洲情趣在线观看| 一区二区三区欧美亚洲| 亚洲一区二区三区影院| 午夜精品久久一牛影视| 婷婷中文字幕一区三区| 麻豆专区一区二区三区四区五区| 美女视频一区在线观看| 国内不卡的二区三区中文字幕| 国产揄拍国内精品对白| 福利一区二区在线观看| 99在线精品一区二区三区| 色呦呦网站一区| 欧美妇女性影城| 欧美mv和日韩mv的网站| 欧美激情一区二区三区全黄| 亚洲丝袜制服诱惑| 日韩综合小视频| 国产综合色精品一区二区三区| 成人黄色大片在线观看| 在线精品视频一区二区三四 | 日韩不卡手机在线v区| 国产一区中文字幕| 99精品视频在线观看| 欧洲亚洲精品在线| 日韩午夜精品视频| 中文一区在线播放| 亚洲一区二区视频| 黄色成人免费在线| 91污在线观看| 3d成人h动漫网站入口| 2014亚洲片线观看视频免费| 国产精品久久久久四虎| 午夜电影网一区| 国产成人精品三级| 欧美日韩免费在线视频| 亚洲精品在线三区| 亚洲最大的成人av| 国产伦精一区二区三区| 欧美三级中文字| 国产欧美精品一区二区色综合朱莉| 一区二区视频免费在线观看| 免费成人在线网站| 日本高清不卡视频| 久久久综合网站| 亚洲123区在线观看| 丁香婷婷综合激情五月色| 欧美三级欧美一级| 国产精品久久久久久久午夜片| 日韩av高清在线观看| aaa欧美日韩| 精品动漫一区二区三区在线观看 | 亚洲国产综合91精品麻豆| 国内精品在线播放| 欧美夫妻性生活| 亚洲视频你懂的| 国产剧情一区在线| 欧美日韩夫妻久久| 亚洲品质自拍视频| 成人开心网精品视频| 日韩欧美一区中文| 亚洲成人av一区| 色婷婷综合久久久久中文一区二区| 久久综合视频网| 日韩电影免费在线观看网站| 色av综合在线| 国产精品蜜臀在线观看| 国精品**一区二区三区在线蜜桃| 欧美日韩国产成人在线91| 一区二区三区欧美激情| 成人av免费在线观看| 国产亚洲精品超碰| 激情综合色综合久久| 91精品视频网| 日韩电影在线观看网站| 91精品国产色综合久久ai换脸| 亚洲一二三区视频在线观看| 91免费观看国产| 亚洲色大成网站www久久九九| 国产一区二区成人久久免费影院| 日韩欧美一级二级三级| 蜜乳av一区二区| 日韩一区二区免费在线观看| 日本一道高清亚洲日美韩| 欧美浪妇xxxx高跟鞋交| 亚洲3atv精品一区二区三区| 欧美日韩国产另类不卡| 五月天中文字幕一区二区| 538在线一区二区精品国产| 日韩电影在线一区| 精品欧美一区二区久久| 国产一区二区女| 国产人成一区二区三区影院| 国产二区国产一区在线观看| 国产欧美日韩在线| 波多野结衣中文一区| 亚洲精品国产视频| 欧美日本一区二区| 伦理电影国产精品| 国产喷白浆一区二区三区| 成人国产电影网| 亚洲精品国产无天堂网2021 | 色综合中文字幕国产 | 国产制服丝袜一区| 国产精品视频一区二区三区不卡| 成人h动漫精品一区二| 日韩理论片一区二区| 欧美性感一区二区三区| 强制捆绑调教一区二区| 久久久夜色精品亚洲| 成人黄色小视频在线观看| 亚洲欧美日本在线| 69堂亚洲精品首页| 国产成人精品亚洲777人妖 | 久久久欧美精品sm网站|