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

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

?? md5c.c

?? 一個(gè)測(cè)試DES加密算法和測(cè)試程序
?? C
字號(hào):
/* 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;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一卡二卡在线观看| 欧美一卡二卡三卡| 99久久久久久| 国产美女av一区二区三区| 久久国产欧美日韩精品| 日本伊人精品一区二区三区观看方式| 亚洲国产sm捆绑调教视频 | 国产午夜一区二区三区| 精品入口麻豆88视频| 日韩午夜电影在线观看| 日韩欧美中文一区| 欧美电视剧免费全集观看| 精品国产三级电影在线观看| 久久一区二区视频| 国产亚洲精品免费| 国产精品你懂的| 亚洲三级电影网站| 亚洲成人综合视频| 蜜桃视频一区二区| 国内成+人亚洲+欧美+综合在线| 国产在线麻豆精品观看| 国产91精品在线观看| 成人av电影在线| 色视频一区二区| 欧美精品1区2区3区| 日韩一区二区在线看| 久久这里只精品最新地址| 国产日韩精品一区| 亚洲九九爱视频| 日韩精品电影一区亚洲| 国产乱人伦偷精品视频不卡| 成人免费高清在线观看| 在线精品视频免费播放| 欧美一区二区黄| 国产欧美日产一区| 亚洲综合色区另类av| 麻豆视频一区二区| 成人一级视频在线观看| 欧美日韩综合色| 精品日本一线二线三线不卡| 国产精品麻豆网站| 性欧美大战久久久久久久久| 国产专区综合网| 色婷婷久久久亚洲一区二区三区 | 日韩欧美国产三级| 国产精品国产三级国产专播品爱网| 亚洲欧美激情视频在线观看一区二区三区 | 91香蕉视频污在线| 欧美一区二区精品在线| 国产精品久久久久一区| 日日夜夜精品视频免费| 成人app软件下载大全免费| 4438x亚洲最大成人网| 亚洲国产精品av| 三级久久三级久久久| 成人性生交大片免费| 欧美福利视频一区| 专区另类欧美日韩| 国产一区二区三区日韩| 欧美亚洲国产怡红院影院| 久久免费看少妇高潮| 午夜国产精品一区| 不卡的av电影| 欧美mv和日韩mv国产网站| 一区二区三区日韩欧美精品| 国精产品一区一区三区mba视频 | 欧美日韩国产在线观看| 国产精品免费人成网站| 美女精品一区二区| 色婷婷综合五月| 中文字幕乱码久久午夜不卡| 奇米精品一区二区三区在线观看| 91浏览器打开| 中文字幕va一区二区三区| 久久精品国产免费| 欧美精品乱码久久久久久| 中文字幕一区二区三区在线不卡| 国模一区二区三区白浆| 日韩视频一区二区三区在线播放| 有码一区二区三区| aaa亚洲精品一二三区| 久久先锋资源网| 蜜桃av一区二区| 欧美精品vⅰdeose4hd| 亚洲黄一区二区三区| k8久久久一区二区三区 | 日韩国产精品久久| 欧美性大战xxxxx久久久| 自拍视频在线观看一区二区| 成人综合婷婷国产精品久久蜜臀| 26uuu欧美| 精品一区二区精品| 欧美mv和日韩mv的网站| 奇米色一区二区三区四区| 91麻豆精品国产自产在线| 亚洲午夜av在线| 欧美亚洲一区二区在线| 亚洲在线视频一区| 在线一区二区三区四区五区| 亚洲欧美日韩国产综合| 91浏览器打开| 亚洲一区在线观看视频| 欧美日韩一区二区三区高清| 一区二区三区国产豹纹内裤在线| 91麻豆swag| 亚洲国产精品综合小说图片区| 91黄视频在线| 亚洲午夜久久久久久久久电影网| 欧洲精品视频在线观看| 亚洲午夜久久久久久久久电影院 | 欧美一级黄色大片| 久久国产剧场电影| 久久婷婷综合激情| 丰满少妇在线播放bd日韩电影| 国产性色一区二区| 99这里只有精品| 亚洲另类在线视频| 欧美久久久久免费| 久久69国产一区二区蜜臀| 欧美草草影院在线视频| 国产一区二区电影| 中文字幕欧美三区| 色综合天天综合| 午夜成人在线视频| 欧美videos大乳护士334| 国产一区二区在线看| 国产精品毛片无遮挡高清| 一本大道久久a久久精二百| 亚洲国产视频一区二区| 日韩女优制服丝袜电影| 国产91在线|亚洲| 亚洲一区二区在线免费看| 欧美一卡二卡三卡| 成人午夜在线视频| 亚洲综合一区二区精品导航| 欧美一区二区三区在| 国产精品12区| 一卡二卡三卡日韩欧美| 日韩午夜激情av| www.欧美日韩国产在线| 亚洲国产精品久久人人爱蜜臀 | 日韩高清不卡一区二区| 欧美精品一区二区三区视频| 成人美女在线观看| 日韩主播视频在线| 亚洲国产高清在线观看视频| 欧美色视频在线观看| 国内精品在线播放| 亚洲午夜av在线| 欧美国产97人人爽人人喊| 欧美日韩在线综合| 国产精品99久久久久久久女警| 亚洲免费在线视频| 精品毛片乱码1区2区3区| 色综合网色综合| 久久爱www久久做| 亚洲精品视频一区| 久久久亚洲精品石原莉奈| 欧美性受xxxx| 成人免费观看av| 麻豆成人免费电影| 一区二区三区免费在线观看| 2023国产精品自拍| 欧美日韩国产高清一区| 国产91精品露脸国语对白| 肉肉av福利一精品导航| 日韩伦理电影网| 精品国产123| 欧美福利视频一区| 91老司机福利 在线| 国产成人精品影院| 毛片av中文字幕一区二区| 亚洲综合视频在线| 亚洲日本在线a| 国产午夜久久久久| 日韩欧美电影在线| 欧美日韩国产不卡| 欧美亚洲丝袜传媒另类| 91蜜桃免费观看视频| 国产精品18久久久| 黄色精品一二区| 日本中文字幕一区二区视频| 一区二区三区在线视频观看| 国产三级一区二区| 精品国产成人在线影院| 欧美疯狂做受xxxx富婆| 欧洲一区二区av| 色综合色综合色综合色综合色综合| 国产麻豆精品在线| 久久机这里只有精品| 日韩精品国产精品| 日韩中文字幕区一区有砖一区| 亚洲综合一区二区三区| 伊人一区二区三区| 亚洲日本va午夜在线影院| 国产精品毛片高清在线完整版 | 国产盗摄女厕一区二区三区| 蜜桃av噜噜一区| 久久精品72免费观看| 麻豆国产精品视频|