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

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

?? md5c.c

?? 在嵌入式移動設(shè)備上實現(xiàn)動態(tài)網(wǎng)頁
?? C
字號:
/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
 *
 * $Id: md5c.c,v 1.3 2002/10/24 14:44:50 bporter Exp $
 */
 
/* 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 "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 void MD5Transform (UINT4 [4], unsigned char [64]);
static void Encode (unsigned char *, UINT4 *, unsigned int);
static void Decode (UINT4 *, unsigned char *, unsigned int);
static void MD5_memcpy (POINTER, POINTER, unsigned int);
static void MD5_memset (POINTER, int, unsigned int);

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

/*
 *	Note:	The following MD5 macros can be implemented as functions
 *			for code compactness, (at the expense of execution speed).
 */

/* 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) + (UINT4)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
  }
#define GG(a, b, c, d, x, s, ac) { \
 (a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
  }
#define HH(a, b, c, d, x, s, ac) { \
 (a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
  }
#define II(a, b, c, d, x, s, ac) { \
 (a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
  }

/* MD5 initialization. Begins an MD5 operation, writing a new context.
 */
void MD5Init (context)
MD5_CONTEXT *context;                                        /* 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 (context, input, inputLen)
MD5_CONTEXT *context;                                        /* context */
unsigned char *input;                                /* input block */
unsigned int inputLen;                     /* length of input block */
{
  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 (digest, context)
unsigned char digest[16];                         /* message digest */
MD5_CONTEXT *context;                                       /* 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 (state, block)
UINT4 state[4];
unsigned char block[64];
{
  UINT4 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.
*/
  MD5_memset ((POINTER)x, 0, sizeof (x));
}

/* Encodes input (UINT4) into output (unsigned char). Assumes len is
  a multiple of 4.
 */
static void Encode (output, input, len)
unsigned char *output;
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 (output, input, len)
UINT4 *output;
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 (output, input, len)
POINTER output;
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 (output, value, len)
POINTER output;
int value;
unsigned int len;
{
  unsigned int i;

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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费精品视频在线| 亚洲综合男人的天堂| 99精品一区二区三区| 午夜精品久久久久久久久久久 | 欧美精品第一页| 亚洲精品视频一区| 色香色香欲天天天影视综合网| 国产69精品久久久久777| 日韩精品专区在线影院重磅| 美日韩一级片在线观看| 精品国产一区二区三区不卡| 激情图区综合网| 国产欧美日韩亚州综合| 9人人澡人人爽人人精品| 一区二区三区免费在线观看| 欧美色涩在线第一页| 男人操女人的视频在线观看欧美| 国产精品99久久久久久有的能看| 91久久精品一区二区二区| 欧美日韩激情一区| 国产成人在线网站| 人人狠狠综合久久亚洲| 亚洲精品乱码久久久久久久久 | 亚洲欧美日韩久久精品| 色8久久人人97超碰香蕉987| 一区二区三区小说| 日韩视频一区在线观看| 东方aⅴ免费观看久久av| 一区二区三区四区高清精品免费观看| 天天色天天操综合| 国产精品一区不卡| 亚洲乱码日产精品bd| 欧美zozo另类异族| 不卡视频免费播放| 日本麻豆一区二区三区视频| 日本一区二区免费在线观看视频 | 一本到三区不卡视频| 美美哒免费高清在线观看视频一区二区 | 久久久五月婷婷| 91原创在线视频| 久久国产欧美日韩精品| 亚洲欧美怡红院| 久久嫩草精品久久久精品| 在线免费观看日本一区| 成人精品视频一区二区三区 | 国产精品麻豆一区二区| 欧美电影一区二区三区| 99久久精品免费| 久久99这里只有精品| 亚洲人成伊人成综合网小说| 久久综合九色综合97婷婷女人 | 蜜桃久久久久久| 亚洲欧美精品午睡沙发| 久久久久久97三级| www国产亚洲精品久久麻豆| 欧美亚洲高清一区二区三区不卡| 亚洲精品国产精品乱码不99 | 国产精品66部| 色欧美日韩亚洲| 一区二区日韩av| 91精品国产综合久久精品app| 国产午夜亚洲精品理论片色戒 | 韩国午夜理伦三级不卡影院| 国产精品每日更新在线播放网址| 国产成人免费视频网站 | 国产精品久久久爽爽爽麻豆色哟哟| 国产美女在线精品| 日本成人中文字幕| 午夜精品久久久久影视| 亚洲国产裸拍裸体视频在线观看乱了| 三级欧美韩日大片在线看| 51精品秘密在线观看| 91免费观看视频| av一区二区不卡| 国产.欧美.日韩| 国产成人av福利| 国产老肥熟一区二区三区| 麻豆中文一区二区| 美女www一区二区| 国内不卡的二区三区中文字幕| 久久久久综合网| 精品国产一区二区亚洲人成毛片| 成人精品亚洲人成在线| 成人aaaa免费全部观看| 成人污视频在线观看| 国产成人精品一区二| 成人午夜伦理影院| 成人黄色在线看| 99天天综合性| 欧美影视一区二区三区| 337p亚洲精品色噜噜| 日韩精品一区二区在线| 国产亚洲欧美日韩日本| 国产精品每日更新| 一区二区在线观看视频| 丝袜美腿成人在线| 精品亚洲国产成人av制服丝袜| 亚洲自拍都市欧美小说| 午夜精品久久久久久久蜜桃app | 欧美在线色视频| 欧美日韩欧美一区二区| 777久久久精品| 久久夜色精品国产欧美乱极品| 91美女片黄在线| 欧美日韩激情一区二区三区| 日韩欧美一二三四区| 国产日韩精品一区二区三区在线| 欧美日韩精品三区| 欧美精品一区二区三区在线| 国产精品久久免费看| 亚洲图片欧美综合| 国产真实乱子伦精品视频| gogogo免费视频观看亚洲一| 欧洲一区二区三区在线| 日韩免费在线观看| 亚洲欧洲一区二区三区| 男女男精品视频| 不卡在线视频中文字幕| 5566中文字幕一区二区电影| 国产亚洲精品中文字幕| 亚洲成av人片| 大胆欧美人体老妇| 91精品国产aⅴ一区二区| 国产欧美日韩视频一区二区| 性做久久久久久久免费看| 国产精品 日产精品 欧美精品| 国产一区在线观看视频| 在线免费观看日韩欧美| 精品国产a毛片| 亚洲一区中文在线| 国产suv精品一区二区三区| 欧美日韩一级视频| 中文文精品字幕一区二区| 毛片不卡一区二区| 欧美午夜寂寞影院| 国产精品视频免费看| 久久99精品国产.久久久久| 欧美无乱码久久久免费午夜一区| 91行情网站电视在线观看高清版| 91麻豆精东视频| 久久综合久久久久88| 一区二区在线看| www.欧美精品一二区| 久久婷婷一区二区三区| 丝袜诱惑亚洲看片| 欧美三级在线看| 亚洲欧洲综合另类在线| 成人h版在线观看| 久久亚洲二区三区| 另类的小说在线视频另类成人小视频在线 | 日本不卡在线视频| 日本黄色一区二区| 欧美激情中文字幕| 国内精品嫩模私拍在线| 欧美日韩美少妇| 亚洲大尺度视频在线观看| 久热成人在线视频| 欧美高清视频在线高清观看mv色露露十八 | 久久综合国产精品| 日韩成人一级大片| 欧美欧美午夜aⅴ在线观看| 亚洲精品乱码久久久久久日本蜜臀| 亚洲风情在线资源站| 色香蕉久久蜜桃| 亚洲精品国产成人久久av盗摄| 亚洲一区二区3| 欧美午夜片在线看| 天天亚洲美女在线视频| 51精品秘密在线观看| 奇米888四色在线精品| 日韩一区二区三区视频在线| 婷婷国产v国产偷v亚洲高清| 欧美精品xxxxbbbb| 亚洲成a人v欧美综合天堂| 欧洲色大大久久| 午夜国产精品一区| 欧美一区二区免费视频| 九色porny丨国产精品| 精品国内片67194| 国产成人在线视频免费播放| 国产午夜精品久久| av亚洲精华国产精华精华| 亚洲精品国产无天堂网2021 | 日本sm残虐另类| 精品久久久三级丝袜| 国产成人在线免费观看| 国产精品另类一区| 色综合色综合色综合色综合色综合| 欧美电视剧免费全集观看| 免费欧美高清视频| 久久久久久久性| 91在线云播放| 亚洲成人av一区二区三区| 欧美精品一区二区三区一线天视频| 一区在线观看视频| 国产成人av一区二区三区在线观看| 777午夜精品视频在线播放| 国产一区二区三区黄视频| 国产精品国产a| 欧美精品欧美精品系列|