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

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

?? md5c.c

?? 屬于加密解密領域的
?? 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 "global.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 void MD5Transform PROTO_LIST ((UINT4 [4], unsigned char [64]));
static void Encode PROTO_LIST
  ((unsigned char *, UINT4 *, unsigned int));
static void Decode PROTO_LIST
  ((UINT4 *, unsigned char *, unsigned int));
static void MD5_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int));
static void MD5_memset PROTO_LIST ((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
};

/* 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_CTX *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_CTX *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_CTX *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;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区高清不卡| 久久综合色8888| 成人免费视频国产在线观看| 黑人精品欧美一区二区蜜桃 | 国产一区二区网址| 美腿丝袜亚洲一区| 国产精品一区二区不卡| 福利91精品一区二区三区| 国产福利精品一区二区| 成人av小说网| 欧美主播一区二区三区| 在线成人av网站| 精品久久人人做人人爽| 国产精品嫩草影院av蜜臀| 国产精品视频一区二区三区不卡| 国产精品欧美精品| 亚洲欧美成aⅴ人在线观看| 亚洲五月六月丁香激情| 蜜臀91精品一区二区三区 | 日本道色综合久久| 538在线一区二区精品国产| 久久网这里都是精品| 日韩理论片在线| 午夜私人影院久久久久| 国产一区二区调教| 在线国产电影不卡| 久久尤物电影视频在线观看| 国产精品久久久久久久久免费相片 | 7777精品久久久大香线蕉| 日韩视频中午一区| 中文欧美字幕免费| 婷婷综合五月天| 成人va在线观看| 欧美精品123区| 中文字幕一区二区5566日韩| 日本午夜一本久久久综合| 成人午夜激情在线| 欧美一区二区私人影院日本| 国产清纯在线一区二区www| 亚洲成人你懂的| www.亚洲色图| 欧美成人一区二区三区在线观看| 亚洲欧美日韩一区二区 | 91精品国产美女浴室洗澡无遮挡| 国产欧美一区在线| 日本一不卡视频| 在线中文字幕一区二区| 国产日韩欧美不卡在线| 视频在线观看一区| 91福利国产成人精品照片| 久久精品免费在线观看| 美女视频黄久久| 欧美军同video69gay| 亚洲日本一区二区| 国产成人综合在线观看| 日韩精品一区二区三区四区 | 久久久蜜桃精品| 日韩成人一区二区| 欧美日韩激情一区二区三区| 亚洲人一二三区| 成人精品视频.| 国产亚洲精品超碰| 国产精品综合久久| 久久青草欧美一区二区三区| 捆绑紧缚一区二区三区视频| 欧美一级日韩不卡播放免费| 亚洲国产视频a| 欧美性感一区二区三区| 亚洲欧美aⅴ...| 99精品国产视频| 自拍偷拍欧美激情| av一二三不卡影片| 国产精品色在线观看| 成人在线视频一区| 亚洲欧美另类综合偷拍| 91在线观看视频| 成人免费在线视频| 色综合久久久久久久久| 亚洲综合在线电影| 欧美日韩在线三级| 美女免费视频一区二区| 精品国产自在久精品国产| 精品在线观看免费| 欧美激情一区二区三区不卡 | 久久久精品免费免费| 国产馆精品极品| 亚洲靠逼com| 欧美视频精品在线| 久久av老司机精品网站导航| 久久嫩草精品久久久久| 成人综合在线观看| 一区二区三区四区在线播放 | 制服丝袜av成人在线看| 久久99精品国产麻豆婷婷| 久久精品欧美一区二区三区麻豆| 成人精品一区二区三区中文字幕| 亚洲欧美偷拍三级| 51久久夜色精品国产麻豆| 久久精品国产精品亚洲综合| 日本一区二区电影| 欧美日韩一区二区三区视频| 美日韩一区二区三区| 中文字幕第一区| 在线不卡欧美精品一区二区三区| 精品一区二区三区久久| 亚洲人成网站影音先锋播放| 日韩午夜电影在线观看| 波多野结衣在线一区| 日本伊人精品一区二区三区观看方式| 精品国产sm最大网站| 日本乱人伦一区| 紧缚奴在线一区二区三区| 亚洲欧美日本在线| 日韩欧美第一区| 91国产丝袜在线播放| 极品少妇一区二区| 亚洲成人免费视| 中文字幕亚洲区| 久久美女高清视频 | 国产一区二区三区最好精华液| 国产精品国产成人国产三级| 日韩一区二区三区免费看| 国产99一区视频免费| 日韩电影在线一区| 亚洲一区二区在线视频| 国产日韩成人精品| 久久亚区不卡日本| 日韩一区二区三区三四区视频在线观看 | 久久噜噜亚洲综合| 欧日韩精品视频| www.成人网.com| 国产精品1区2区3区在线观看| 亚洲福利视频一区二区| 亚洲欧美成人一区二区三区| 国产婷婷精品av在线| 日韩一区二区免费高清| 欧美三级中文字幕| 在线免费观看视频一区| 99久久国产综合精品女不卡| 国产suv精品一区二区883| 久久精品国产网站| 日韩中文字幕av电影| 亚洲va欧美va天堂v国产综合| 亚洲激情第一区| 亚洲综合偷拍欧美一区色| 亚洲激情av在线| 一区二区激情视频| 一区二区三区毛片| 亚洲一区免费在线观看| 亚洲一区二区三区三| 亚洲狠狠爱一区二区三区| 亚洲一区精品在线| 午夜精品免费在线| 日韩精品免费专区| 久久国产欧美日韩精品| 精品一区二区三区视频在线观看| 麻豆国产一区二区| 国产伦精品一区二区三区免费迷| 午夜精品久久久久久| 日韩av电影免费观看高清完整版 | 成人黄色片在线观看| 99久久精品国产观看| 一本色道久久加勒比精品| 色诱视频网站一区| 51精品国自产在线| 日韩一卡二卡三卡| 国产情人综合久久777777| 国产精品美女久久久久久久久久久| 国产精品乱人伦| 一个色综合网站| 久久精品国产77777蜜臀| 国产a久久麻豆| 色香蕉久久蜜桃| 日韩精品中文字幕在线不卡尤物| 2021国产精品久久精品| 国产欧美一区二区精品性| 亚洲欧洲日韩一区二区三区| 一区二区久久久| 黑人精品欧美一区二区蜜桃| 不卡欧美aaaaa| 6080午夜不卡| 国产精品久久久久一区二区三区| 亚洲与欧洲av电影| 国产综合色在线| 91女厕偷拍女厕偷拍高清| 在线综合+亚洲+欧美中文字幕| 国产欧美日韩卡一| 爽好多水快深点欧美视频| 成人av先锋影音| 欧美一区午夜视频在线观看| 国产精品久久久久久福利一牛影视| 亚洲一区二区三区自拍| 国产成人在线色| 欧美高清视频在线高清观看mv色露露十八 | 亚洲大片在线观看| 国产69精品久久久久毛片| 欧美日韩精品一区视频| 中文字幕不卡在线播放| 日韩成人免费电影| 欧美亚洲国产一区在线观看网站|