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

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

?? md5.c

?? 自己編寫的MD5加密的程序,經過測試,可以在DOS下運行
?? 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一区二区三区免费野_久草精品视频
欧美主播一区二区三区美女| 一区二区三区欧美亚洲| 懂色av一区二区夜夜嗨| 久久99精品国产.久久久久| 亚洲精品v日韩精品| 欧美综合在线视频| 亚洲一级二级三级| 一区二区三区 在线观看视频| www.日本不卡| 成人黄色国产精品网站大全在线免费观看| 欧美www视频| 91精品国产高清一区二区三区| 精品亚洲成a人在线观看| 日韩成人dvd| 免费日本视频一区| 久久精品国产精品亚洲综合| 中文字幕不卡在线观看| 欧美性猛片aaaaaaa做受| 欧美日韩在线播放三区| 欧美精品在线观看一区二区| 成人亚洲精品久久久久软件| 成人免费观看男女羞羞视频| 成人性生交大片免费看中文网站| 亚洲午夜电影在线观看| 视频一区中文字幕| 久久99精品国产麻豆婷婷 | 欧美日韩精品福利| 欧美精品色综合| 成人av网址在线| 麻豆视频观看网址久久| 亚洲区小说区图片区qvod| 亚洲综合成人在线| 日本欧美大码aⅴ在线播放| 国产伦精品一区二区三区视频青涩| 亚洲国产一区二区在线播放| 日韩成人免费电影| 福利电影一区二区| 在线看国产一区| 久久综合久久鬼色| 亚洲欧美色图小说| 精品一区二区三区视频在线观看| 午夜精品影院在线观看| 蜜乳av一区二区三区| 成人av在线影院| 国产乱人伦偷精品视频不卡| 色天天综合久久久久综合片| 成人理论电影网| 国产成人精品免费一区二区| 欧美伊人久久大香线蕉综合69| 99久久免费精品高清特色大片| 高清成人在线观看| 欧美高清激情brazzers| 国产精品久久久久久户外露出 | 欧美成人性战久久| 1区2区3区国产精品| 亚洲国产精品精华液ab| 国产丝袜美腿一区二区三区| 亚洲电影在线播放| 粉嫩在线一区二区三区视频| 欧美精品粉嫩高潮一区二区| 欧美日韩午夜精品| 亚洲女人小视频在线观看| 国产一区二区在线视频| 成人少妇影院yyyy| 欧美va在线播放| 亚洲午夜三级在线| 91在线码无精品| 国产无一区二区| 亚洲欧美自拍偷拍色图| 国产在线不卡视频| 精品美女一区二区| 麻豆91免费观看| 91精品国产综合久久精品性色| 日韩欧美综合在线| 日韩高清在线不卡| 在线播放视频一区| 日日摸夜夜添夜夜添国产精品| 奇米色一区二区| 国产精品1区二区.| 久久精品综合网| 国产乱码精品一区二区三区五月婷| caoporn国产一区二区| 国产女同性恋一区二区| 一二三区精品视频| 在线视频一区二区三区| 精品福利在线导航| 亚洲人吸女人奶水| 亚洲精品成人在线| 中日韩av电影| 久久久精品欧美丰满| 久久亚洲综合色一区二区三区| 欧美久久久久久久久| 一个色综合av| 91精品国产综合久久精品| 婷婷一区二区三区| 精品久久久久久综合日本欧美| 国产精品女人毛片| 99久久国产综合精品色伊| 一区二区三区四区在线播放 | 天天做天天摸天天爽国产一区| 九九九久久久精品| 欧美激情在线一区二区三区| av日韩在线网站| 夜夜精品视频一区二区| 9人人澡人人爽人人精品| 岛国精品在线观看| 欧美日韩中文字幕一区| 蜜桃在线一区二区三区| 国产精品一区二区在线观看不卡| 欧美三级一区二区| 中文字幕在线观看一区二区| 黄色日韩网站视频| 国产精品免费观看视频| 欧美亚洲图片小说| 中文一区在线播放| 欧美日韩精品系列| 亚洲人成网站在线| 日韩欧美一级片| 99久久久国产精品| 麻豆国产一区二区| 亚洲四区在线观看| 精品久久人人做人人爱| 色www精品视频在线观看| 捆绑调教美女网站视频一区| 综合自拍亚洲综合图不卡区| 日韩一区二区中文字幕| 99re这里只有精品首页| 色一区在线观看| 国产精品久久久久久久久图文区| 奇米影视一区二区三区| 亚洲激情图片qvod| 国产亚洲精品免费| 欧美二区三区的天堂| 91丨九色丨蝌蚪丨老版| 亚洲青青青在线视频| 色播五月激情综合网| 成人亚洲精品久久久久软件| 青青草伊人久久| 亚洲午夜国产一区99re久久| 中文字幕一区二区三区在线观看| www.在线欧美| 国产米奇在线777精品观看| 午夜精品久久久久久久99樱桃| 欧美妇女性影城| 欧美综合一区二区三区| 成人短视频下载 | 成人黄色a**站在线观看| 久久精品国产色蜜蜜麻豆| 亚洲电影一区二区三区| 日本一区二区成人| 亚洲精品国产无天堂网2021 | 蜜臀精品久久久久久蜜臀| 国产精品不卡一区二区三区| 久久日韩精品一区二区五区| 91精品国产综合久久久蜜臀粉嫩| 久久电影网电视剧免费观看| 婷婷成人综合网| 视频一区中文字幕| 国产亚洲一区二区三区在线观看| 成人av在线资源网站| 成人午夜看片网址| 国产成人精品免费网站| 亚洲午夜视频在线观看| 亚洲一级片在线观看| 日韩欧美一级在线播放| 精品欧美一区二区在线观看| 精品国产乱码久久久久久免费 | 顶级嫩模精品视频在线看| 精品无人区卡一卡二卡三乱码免费卡 | 狠狠色综合日日| 亚洲欧洲一区二区在线播放| 国产精品家庭影院| 亚洲日韩欧美一区二区在线| 一区二区三区美女| 天天爽夜夜爽夜夜爽精品视频| 久久久精品一品道一区| 亚洲欧洲色图综合| 精品欧美一区二区三区精品久久 | 国产在线不卡一卡二卡三卡四卡| 综合电影一区二区三区 | 尤物在线观看一区| 亚洲福利视频三区| 国产呦萝稀缺另类资源| 国产成人免费av在线| 日产国产高清一区二区三区| 国产精品伊人色| 91在线免费视频观看| 91精品国产一区二区人妖| 2024国产精品| 欧美日韩成人在线| 99热在这里有精品免费| 欧美人与z0zoxxxx视频| 精品久久久久久无| 欧美一二三区在线观看| 国产精品美女久久久久aⅴ | 亚洲va欧美va人人爽午夜| 国产一区二区三区视频在线播放| 日日夜夜免费精品| 成人精品鲁一区一区二区| 国产一区二区三区免费在线观看|