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

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

?? md2c.c

?? 一個測試DES加密算法和測試程序
?? C
字號:
/* MD2C.C - RSA Data Security, Inc., MD2 message-digest algorithm
 */

/* Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All
   rights reserved.

   License to copy and use this software is granted for
   non-commercial Internet Privacy-Enhanced Mail provided that it is
   identified as the "RSA Data Security, Inc. MD2 Message Digest
   Algorithm" in all material mentioning or referencing this software
   or this function.

   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 "md2.h"

static void MD2Transform PROTO_LIST
  ((unsigned char [16], unsigned char [16], unsigned char [16]));
static void MD2_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int));
static void MD2_memset PROTO_LIST ((POINTER, int, unsigned int));

/* Permutation of 0..255 constructed from the digits of pi. It gives a
   "random" nonlinear byte substitution operation.
 */
static unsigned char PI_SUBST[256] = {
  41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6,
  19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188,
  76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24,
  138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251,
  245, 142, 187, 47, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63,
  148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50,
  39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48, 179, 72, 165,
  181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210,
  150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157,
  112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27,
  96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15,
  85, 71, 163, 35, 221, 81, 175, 58, 195, 92, 249, 206, 186, 197,
  234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205, 244, 65,
  129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123,
  8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233,
  203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228,
  166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237,
  31, 26, 219, 153, 141, 51, 159, 17, 131, 20
};

static unsigned char *PADDING[] = {
  (unsigned char *)"",
  (unsigned char *)"\001",
  (unsigned char *)"\002\002",
  (unsigned char *)"\003\003\003",
  (unsigned char *)"\004\004\004\004",
  (unsigned char *)"\005\005\005\005\005",
  (unsigned char *)"\006\006\006\006\006\006", 
  (unsigned char *)"\007\007\007\007\007\007\007",
  (unsigned char *)"\010\010\010\010\010\010\010\010",
  (unsigned char *)"\011\011\011\011\011\011\011\011\011",
  (unsigned char *)"\012\012\012\012\012\012\012\012\012\012",
  (unsigned char *)"\013\013\013\013\013\013\013\013\013\013\013",
  (unsigned char *)"\014\014\014\014\014\014\014\014\014\014\014\014",
  (unsigned char *)
    "\015\015\015\015\015\015\015\015\015\015\015\015\015",
  (unsigned char *)
    "\016\016\016\016\016\016\016\016\016\016\016\016\016\016",
  (unsigned char *)
    "\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017",
  (unsigned char *)
    "\020\020\020\020\020\020\020\020\020\020\020\020\020\020\020\020"
};

/* MD2 initialization. Begins an MD2 operation, writing a new context.
 */
void MD2Init (context)
MD2_CTX *context;                                        /* context */
{
  context->count = 0;
  MD2_memset ((POINTER)context->state, 0, sizeof (context->state));
  MD2_memset
    ((POINTER)context->checksum, 0, sizeof (context->checksum));
}

/* MD2 block update operation. Continues an MD2 message-digest
     operation, processing another message block, and updating the
     context.
 */
void MD2Update (context, input, inputLen)
MD2_CTX *context;                                        /* context */
unsigned char *input;                                /* input block */
unsigned int inputLen;                     /* length of input block */
{
  unsigned int i, index, partLen;
  
  /* Update number of bytes mod 16 */
  index = context->count;
  context->count = (index + inputLen) & 0xf;
  
  partLen = 16 - index;
  
  /* Transform as many times as possible.
    */
  if (inputLen >= partLen) {
    MD2_memcpy
      ((POINTER)&context->buffer[index], (POINTER)input, partLen);
    MD2Transform (context->state, context->checksum, context->buffer);

    for (i = partLen; i + 15 < inputLen; i += 16)
      MD2Transform (context->state, context->checksum, &input[i]);
    
    index = 0;
  }
  else
    i = 0;
  
  /* Buffer remaining input */
  MD2_memcpy
    ((POINTER)&context->buffer[index], (POINTER)&input[i],
     inputLen-i);
}

/* MD2 finalization. Ends an MD2 message-digest operation, writing the
     message digest and zeroizing the context.
 */
void MD2Final (digest, context)
unsigned char digest[16];                         /* message digest */
MD2_CTX *context;                                        /* context */
{
  unsigned int index, padLen;

  /* Pad out to multiple of 16.
   */
  index = context->count;
  padLen = 16 - index;
  MD2Update (context, PADDING[padLen], padLen);

  /* Extend with checksum */
  MD2Update (context, context->checksum, 16);
  
  /* Store state in digest */
  MD2_memcpy ((POINTER)digest, (POINTER)context->state, 16);
  
  /* Zeroize sensitive information.
   */
  MD2_memset ((POINTER)context, 0, sizeof (*context));
}

/* MD2 basic transformation. Transforms state and updates checksum
     based on block.
 */
static void MD2Transform (state, checksum, block)
unsigned char state[16];
unsigned char checksum[16];
unsigned char block[16];
{
  unsigned int i, j, t;
  unsigned char x[48];
  
  /* Form encryption block from state, block, state ^ block.
   */
  MD2_memcpy ((POINTER)x, (POINTER)state, 16);
  MD2_memcpy ((POINTER)x+16, (POINTER)block, 16);
  for (i = 0; i < 16; i++)
    x[i+32] = state[i] ^ block[i];
  
  /* Encrypt block (18 rounds).
   */
  t = 0;
  for (i = 0; i < 18; i++) {
    for (j = 0; j < 48; j++)
      t = x[j] ^= PI_SUBST[t];
    t = (t + i) & 0xff;
  }
    
  /* Save new state */
  MD2_memcpy ((POINTER)state, (POINTER)x, 16);
    
  /* Update checksum.
   */
  t = checksum[15];
  for (i = 0; i < 16; i++)
    t = checksum[i] ^= PI_SUBST[block[i] ^ t];

  /* Zeroize sensitive information.
   */
  MD2_memset ((POINTER)x, 0, sizeof (x));
}

/* Note: Replace "for loop" with standard memcpy if possible.
 */
static void MD2_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 MD2_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一区二区三区免费野_久草精品视频
久久精品国产色蜜蜜麻豆| 国产精品久久久久影院老司| 亚洲国产一区二区视频| 欧美视频在线播放| 图片区小说区区亚洲影院| 欧美精品v日韩精品v韩国精品v| 亚洲综合成人在线| 欧美精品自拍偷拍动漫精品| 日本成人在线电影网| 精品国产青草久久久久福利| 国产一区二区不卡| 日韩一区日韩二区| 欧美日韩另类一区| 国产资源在线一区| 中文字幕一区免费在线观看| 97精品视频在线观看自产线路二| 亚洲欧美日本在线| 91精品婷婷国产综合久久性色 | 免费成人av在线播放| 欧美tickling挠脚心丨vk| 国产经典欧美精品| 亚洲自拍与偷拍| 日韩精品一区二区三区中文不卡 | 黄网站免费久久| 国产精品免费人成网站| 在线精品亚洲一区二区不卡| 日本中文字幕一区二区视频 | 日韩欧美国产麻豆| 高清久久久久久| 亚洲一区二区三区不卡国产欧美| 日韩欧美在线综合网| av一区二区三区四区| 蜜桃久久精品一区二区| 亚洲婷婷综合久久一本伊一区 | 久久福利资源站| 最新国产精品久久精品| 56国语精品自产拍在线观看| 国产不卡视频在线播放| 午夜日韩在线观看| 国产精品视频yy9299一区| 欧美另类一区二区三区| 成人av影院在线| 美女久久久精品| 亚洲视频狠狠干| 精品精品国产高清一毛片一天堂| 在线免费观看一区| 国产a级毛片一区| 日本伊人色综合网| 亚洲人吸女人奶水| 久久精品视频在线看| 欧美一区二区视频在线观看2022| 91在线精品一区二区三区| 国产精品资源在线观看| 日韩av午夜在线观看| 有码一区二区三区| 亚洲国产高清不卡| 精品成人免费观看| 在线91免费看| 欧洲一区在线观看| 91香蕉视频黄| 成人看片黄a免费看在线| 久草这里只有精品视频| 日韩精品一级二级| 亚洲国产视频一区二区| 亚洲另类在线一区| 亚洲日本一区二区三区| 国产精品电影一区二区三区| 国产亚洲精品7777| 久久免费电影网| 日韩欧美国产综合| 91精品免费观看| 91麻豆精品国产| 51精品视频一区二区三区| 欧美日韩一区二区电影| 91福利区一区二区三区| 91免费国产在线观看| 91原创在线视频| 色综合天天综合狠狠| 97aⅴ精品视频一二三区| 99这里都是精品| 色先锋资源久久综合| 色婷婷精品久久二区二区蜜臂av| 91理论电影在线观看| 色先锋aa成人| 欧美亚洲国产怡红院影院| 欧美亚洲日本国产| 欧美日韩www| 欧美一区二区三区在线| 精品少妇一区二区三区在线播放 | 风间由美一区二区三区在线观看 | 色先锋aa成人| 欧美日韩中文另类| 欧美女孩性生活视频| 欧美一级在线视频| 久久综合九色综合97婷婷 | 欧美一级高清片| 欧美成人a在线| 久久久久高清精品| 亚洲天堂久久久久久久| 亚洲一区二区三区四区五区中文| 日韩专区在线视频| 国内久久精品视频| av亚洲精华国产精华精| 欧美影片第一页| 日韩精品一区二区三区视频在线观看 | 午夜激情一区二区三区| 久久av资源站| 99久久99久久免费精品蜜臀| 精品视频1区2区| 欧美精品一区二区三区高清aⅴ| 中文字幕不卡在线观看| 日韩美女视频19| 日韩激情一二三区| 国产91综合网| 欧美日韩综合色| 久久精品人人做人人综合| 一区二区三区四区在线免费观看| 日韩高清在线观看| 99久久综合99久久综合网站| 欧美精品久久99久久在免费线| 久久久影视传媒| 亚洲成年人网站在线观看| 久久成人18免费观看| 91尤物视频在线观看| 日韩欧美一级在线播放| 中文字幕在线不卡一区| 蜜桃av一区二区| 色综合天天视频在线观看| 日韩一区二区免费视频| 亚洲国产精品成人久久综合一区| 天天综合天天综合色| 成人国产精品免费观看动漫| 91精品国产综合久久精品图片 | 久久久蜜桃精品| 亚洲一区二区精品3399| 成人a免费在线看| 日韩丝袜情趣美女图片| 一个色妞综合视频在线观看| 国产精品白丝av| 日韩免费高清视频| 亚洲国产精品天堂| 91碰在线视频| 国产欧美日韩综合| 久久99国产精品久久99果冻传媒| 欧洲一区在线观看| 综合欧美亚洲日本| 国产激情视频一区二区在线观看| 5月丁香婷婷综合| 亚洲一区在线观看视频| 成人av免费在线播放| 久久男人中文字幕资源站| 免费不卡在线视频| 欧美福利电影网| 天天综合网天天综合色| 欧美影院精品一区| 一区二区三区**美女毛片| 91亚洲精品乱码久久久久久蜜桃| 久久久精品tv| 国模少妇一区二区三区| 日韩精品中文字幕在线不卡尤物 | 久久久久久99精品| 精品一区二区三区影院在线午夜| 欧美日韩国产精品自在自线| 亚洲一区二区免费视频| 日本黄色一区二区| 亚洲精品国产品国语在线app| av中文字幕亚洲| 中文字幕一区二区不卡| 成人福利视频在线看| 中文字幕av一区二区三区免费看| 高清成人在线观看| 国产欧美精品一区二区色综合 | 欧洲在线/亚洲| 香港成人在线视频| 51久久夜色精品国产麻豆| 日本欧洲一区二区| 日韩欧美亚洲另类制服综合在线| 日本亚洲天堂网| 精品国产电影一区二区| 国产乱码精品一区二区三区av| 国产欧美日韩另类一区| 成人免费毛片app| 亚洲人成7777| 精品1区2区3区| 热久久久久久久| 久久伊人蜜桃av一区二区| 国产九色sp调教91| 自拍偷拍国产精品| 欧美视频一区在线| 青青草原综合久久大伊人精品优势 | 极品销魂美女一区二区三区| 久久综合九色综合97婷婷| 不卡的电影网站| 亚洲综合一区二区精品导航| 欧美日本一道本在线视频| 久久精品国产免费看久久精品| 久久综合资源网| 99re热这里只有精品免费视频| 亚洲一区二区视频在线观看| 欧美老年两性高潮|