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

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

?? md5.cpp

?? 一個簡單的發送郵件源代碼
?? CPP
字號:
/* 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 "stdafx.h"
#include "glob-md5.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 (UINT4 state[4], unsigned char block[64]);
static void Encode (unsigned char *output, UINT4 *input, unsigned int len);
static void Decode (UINT4 *output, unsigned char *input, unsigned int len);
static void MD5_memcpy (POINTER output, POINTER input, unsigned int len);
static void MD5_memset (POINTER output, int value, unsigned int len);

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

/* 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] += ((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 (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.
*/
  MD5_memset ((POINTER)context, 0, sizeof (*context));
}

/* MD5 basic transformation. Transforms state based on block.
 */
static void MD5Transform (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 (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 (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 (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 (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综合在线播放| 一区二区欧美精品| 中文字幕一区二区三中文字幕| 精油按摩中文字幕久久| 国产69精品久久久久毛片| 99精品国产一区二区三区不卡| 91在线播放网址| 欧美区视频在线观看| 日韩一区二区视频在线观看| 久久久久久久综合狠狠综合| 亚洲欧美日韩国产成人精品影院| 青娱乐精品视频在线| 国产精品99久久不卡二区| 色噜噜久久综合| 精品久久久久久久人人人人传媒 | 久久众筹精品私拍模特| 国产精品传媒入口麻豆| 亚洲成人一二三| 国产精品乡下勾搭老头1| 一本到三区不卡视频| 日韩手机在线导航| 亚洲视频中文字幕| 日韩欧美一级二级三级久久久| 久久精品在线免费观看| 亚洲丰满少妇videoshd| 国产高清不卡一区| 欧美人妖巨大在线| 国产精品理论片在线观看| 天天色综合成人网| 99久久精品免费观看| 日韩一区二区在线看片| 亚洲免费观看在线视频| 麻豆91免费观看| 色婷婷激情综合| 精品区一区二区| 亚洲国产一区在线观看| 成人黄色在线网站| 精品久久久久久综合日本欧美| 亚洲激情网站免费观看| 丁香天五香天堂综合| 日韩久久久精品| 亚洲不卡在线观看| a级高清视频欧美日韩| 久久五月婷婷丁香社区| 日韩精品电影在线观看| 91成人在线精品| 国产精品免费aⅴ片在线观看| 欧美日韩国产美女| 亚洲欧洲精品一区二区精品久久久 | 亚洲成av人片一区二区梦乃| 国产不卡一区视频| 欧美成人欧美edvon| 日韩一区精品字幕| 色婷婷综合激情| 国产精品私人影院| 国产精品资源网| 日韩午夜精品视频| 午夜精品免费在线观看| 91久久精品一区二区三| 亚洲欧美日韩国产另类专区| www.欧美精品一二区| 亚洲国产精品激情在线观看| 国产精品18久久久久| 精品国产乱码久久久久久久| 久久精品国产999大香线蕉| 欧美日韩亚洲综合在线 | 欧美日本在线看| 亚洲国产毛片aaaaa无费看| 色哟哟国产精品免费观看| 国产精品美女久久久久aⅴ| 国产精品香蕉一区二区三区| 久久综合视频网| 国产麻豆精品在线观看| 久久久国产午夜精品| 国产精品中文字幕一区二区三区| 久久综合成人精品亚洲另类欧美 | 一本色道久久综合亚洲精品按摩| 国产精品家庭影院| 成人永久aaa| 国产精品国产三级国产专播品爱网 | 91小视频在线观看| 福利视频网站一区二区三区| 久久综合999| 粉嫩aⅴ一区二区三区四区| 中文一区在线播放| www.亚洲免费av| 亚洲精品你懂的| 欧美色精品天天在线观看视频| 午夜久久久影院| 日韩一级免费一区| 国产一级精品在线| 亚洲国产电影在线观看| 99精品久久99久久久久| 亚洲无线码一区二区三区| 欧美蜜桃一区二区三区| 久久机这里只有精品| 久久久一区二区| 91在线精品一区二区三区| 亚洲一级二级在线| 欧美刺激脚交jootjob| 国产精品一区二区在线播放| 国产精品毛片a∨一区二区三区| av电影一区二区| 亚洲国产乱码最新视频| 欧美电影免费观看完整版| 国产成人自拍在线| 亚洲精品国产一区二区精华液 | 国产亚洲精品精华液| a在线播放不卡| 亚洲一区二区欧美激情| 日韩视频一区在线观看| 成人午夜视频网站| 亚洲第一福利视频在线| 久久网站最新地址| 91啪亚洲精品| 欧美丰满美乳xxx高潮www| 经典三级一区二区| 中文字幕日韩一区| 91精品国产综合久久蜜臀 | 日本一区二区动态图| 91黄色在线观看| 九一久久久久久| 亚洲男同1069视频| 日韩精品一区国产麻豆| 91在线看国产| 久久精品999| 亚洲激情av在线| 久久久久国产精品人| 欧美在线观看18| 国产精品2024| 日韩国产欧美一区二区三区| 国产精品网站在线| 91精品国产丝袜白色高跟鞋| 不卡视频免费播放| 美腿丝袜亚洲一区| 亚洲精品日日夜夜| 久久九九久久九九| 91麻豆精品久久久久蜜臀| 99久久99久久精品国产片果冻| 奇米精品一区二区三区在线观看一| 国产精品情趣视频| 欧美变态口味重另类| 欧美在线高清视频| 国产区在线观看成人精品| 欧美精品一卡二卡| av电影在线观看完整版一区二区| 久久99久久久久久久久久久| 亚洲激情网站免费观看| 中文字幕精品在线不卡| 日韩视频中午一区| 欧美日韩激情一区二区| 97久久精品人人做人人爽50路| 国产在线精品一区二区| 日韩电影免费一区| 亚洲在线观看免费视频| 国产精品久久久久久久久免费丝袜 | 91丨porny丨蝌蚪视频| 国产在线不卡视频| 美女被吸乳得到大胸91| 亚洲第一综合色| 亚洲免费成人av| 中文字幕一区二区三| 欧美国产成人精品| 久久精品男人天堂av| 精品粉嫩aⅴ一区二区三区四区| 亚洲午夜免费福利视频| 成人欧美一区二区三区白人| 国产喂奶挤奶一区二区三区| 久久综合五月天婷婷伊人| 日韩欧美国产1| 91精品国产综合久久久蜜臀图片| 欧美在线免费观看视频| 色吧成人激情小说| 色综合天天视频在线观看| caoporm超碰国产精品| 成人综合日日夜夜| 国产91露脸合集magnet | 中文字幕中文在线不卡住| 国产日本一区二区| 国产网站一区二区| 欧美激情在线一区二区| 欧美韩国一区二区| 中文字幕第一区第二区| 中文字幕+乱码+中文字幕一区| 国产日产精品1区| 中文字幕的久久| 最新日韩在线视频| 亚洲欧美经典视频| 一区二区三区四区av| 亚洲自拍偷拍麻豆| 亚洲一区二区不卡免费| 五月婷婷综合在线| 日韩av电影免费观看高清完整版| 日韩av一二三| 久久99精品国产麻豆婷婷| 日韩欧美视频一区| 精品入口麻豆88视频| 欧美精品一区二区精品网| 国产日韩精品一区二区三区 | 韩国女主播一区二区三区|