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

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

?? rfc1319.txt

?? A console-based hah calculators
?? TXT
?? 第 1 頁 / 共 2 頁
字號:





Network Working Group                                         B. Kaliski
Request for Comments: 1319                              RSA Laboratories
Updates: RFC 1115                                             April 1992


                     The MD2 Message-Digest Algorithm

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard.  Distribution of this memo is
   unlimited.

Acknowlegements

   The description of MD2 is based on material prepared by John Linn and
   Ron Rivest.  Their permission to incorporate that material is greatly
   appreciated.

Table of Contents

   1. Executive Summary                                                1
   2. Terminology and Notation                                         2
   3. MD2 Algorithm Description                                        2
   4. Summary                                                          4
   References                                                          5
   APPENDIX A - Reference Implementation                               5
   Security Considerations                                            17
   Author's Address                                                   17

1. Executive Summary

   This document describes the MD2 message-digest algorithm. The
   algorithm takes as input a message of arbitrary length and produces
   as output a 128-bit "fingerprint" or "message digest" of the input.
   It is conjectured that it is computationally infeasible to produce
   two messages having the same message digest, or to produce any
   message having a given prespecified target message digest. The MD2
   algorithm is intended for digital signature applications, where a
   large file must be "compressed" in a secure manner before being
   signed with a private (secret) key under a public-key cryptosystem
   such as RSA.

   License to use MD2 is granted for non-commerical Internet Privacy-
   Enhanced Mail [1-3].

   This document is an update to the August 1989 RFC 1115 [3], which
   also gives a reference implementation of MD2. The main differences



Kaliski                                                         [Page 1]

RFC 1319              MD2 Message-Digest Algorithm            April 1992


   are that a textual description of MD2 is included, and that the
   reference implementation of MD2 is more portable.

   For OSI-based applications, MD2's object identifier is

   md2 OBJECT IDENTIFIER ::=
   iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 2}

   In the X.509 type AlgorithmIdentifier [4], the parameters for MD2
   should have type NULL.

2. Terminology and Notation

   In this document, a "byte" is an eight-bit quantity.

   Let x_i denote "x sub i". If the subscript is an expression, we
   surround it in braces, as in x_{i+1}. Similarly, we use ^ for
   superscripts (exponentiation), so that x^i denotes x to the i-th
   power.

   Let X xor Y denote the bit-wise XOR of X and Y.

3. MD2 Algorithm Description

   We begin by supposing that we have a b-byte message as input, and
   that we wish to find its message digest. Here b is an arbitrary
   nonnegative integer; b may be zero, and it may be arbitrarily large.
   We imagine the bytes of the message written down as follows:

                   m_0 m_1 ... m_{b-1}

   The following five steps are performed to compute the message digest
   of the message.

3.1 Step 1. Append Padding Bytes

   The message is "padded" (extended) so that its length (in bytes) is
   congruent to 0, modulo 16. That is, the message is extended so that
   it is a multiple of 16 bytes long. Padding is always performed, even
   if the length of the message is already congruent to 0, modulo 16.

   Padding is performed as follows: "i" bytes of value "i" are appended
   to the message so that the length in bytes of the padded message
   becomes congruent to 0, modulo 16. At least one byte and at most 16
   16 bytes are appended.

   At this point the resulting message (after padding with bytes) has a
   length that is an exact multiple of 16 bytes. Let M[0 ... N-1] denote



Kaliski                                                         [Page 2]

RFC 1319              MD2 Message-Digest Algorithm            April 1992


   the bytes of the resulting message, where N is a multiple of 16.

3.2 Step 2. Append Checksum

   A 16-byte checksum of the message is appended to the result of the
   previous step.

   This step uses a 256-byte "random" permutation constructed from the
   digits of pi. Let S[i] denote the i-th element of this table. The
   table is given in the appendix.

   Do the following:

      /* Clear checksum. */
      For i = 0 to 15 do:
         Set C[i] to 0.
      end /* of loop on i */

      Set L to 0.

      /* Process each 16-word block. */
      For i = 0 to N/16-1 do

         /* Checksum block i. */
         For j = 0 to 15 do
            Set c to M[i*16+j].
            Set C[j] to S[c xor L].
            Set L to C[j].
          end /* of loop on j */
       end /* of loop on i */

   The 16-byte checksum C[0 ... 15] is appended to the message. Let M[0
   with checksum), where N' = N + 16.

3.3 Step 3. Initialize MD Buffer

   A 48-byte buffer X is used to compute the message digest. The buffer
   is initialized to zero.













Kaliski                                                         [Page 3]

RFC 1319              MD2 Message-Digest Algorithm            April 1992


3.4 Step 4. Process Message in 16-Byte Blocks

   This step uses the same 256-byte permutation S as step 2 does.

   Do the following:

      /* Process each 16-word block. */
      For i = 0 to N'/16-1 do

         /* Copy block i into X. */
         For j = 0 to 15 do
            Set X[16+j] to M[i*16+j].
            Set X[32+j] to (X[16+j] xor X[j]).
          end /* of loop on j */

         Set t to 0.

         /* Do 18 rounds. */
         For j = 0 to 17 do

            /* Round j. */
            For k = 0 to 47 do
               Set t and X[k] to (X[k] xor S[t]).
            end /* of loop on k */

            Set t to (t+j) modulo 256.
         end /* of loop on j */

      end /* of loop on i */

3.5 Step 5. Output

   The message digest produced as output is X[0 ... 15]. That is, we
   begin with X[0], and end with X[15].

   This completes the description of MD2. A reference implementation in
   C is given in the appendix.

4. Summary

   The MD2 message-digest algorithm is simple to implement, and provides
   a "fingerprint" or message digest of a message of arbitrary length.
   It is conjectured that the difficulty of coming up with two messages
   having the same message digest is on the order of 2^64 operations,
   and that the difficulty of coming up with any message having a given
   message digest is on the order of 2^128 operations. The MD2 algorithm
   has been carefully scrutinized for weaknesses. It is, however, a
   relatively new algorithm and further security analysis is of course



Kaliski                                                         [Page 4]

RFC 1319              MD2 Message-Digest Algorithm            April 1992


   justified, as is the case with any new proposal of this sort.

References

   [1] Linn, J., "Privacy Enhancement for Internet Electronic Mail: Part
       I -- Message Encipherment and Authentication Procedures", RFC
       1113, DEC,  IAB Privacy Task Force, August 1989.

   [2] Kent, S., and J. Linn, "Privacy Enhancement for Internet
       Electronic Mail: Part II -- Certificate-Based Key Management",
       RFC 1114, BBNCC, DEC, IAB Privacy Task Force, August 1989.

   [3] Linn, J., "Privacy Enhancement for Internet Electronic Mail: Part
       III -- Algorithms, Modes, and Identifiers", RFC 1115 DEC, IAB
       Privacy Task Force, August 1989.

   [4] CCITT Recommendation X.509 (1988), "The Directory -
       Authentication Framework".

APPENDIX A - Reference Implementation

   This appendix contains the following files taken from RSAREF: A
   Cryptographic Toolkit for Privacy-Enhanced Mail:

     global.h -- global header file

     md2.h -- header file for MD2

     md2c.c -- source code for MD2

For more information on RSAREF, send email to <rsaref@rsa.com>.

The appendix also includes the following file:

     mddriver.c -- test driver for MD2, MD4 and MD5

The driver compiles for MD5 by default but can compile for MD2 or MD4 if
the symbol MD is defined on the C compiler command line as 2 or 4.

A.1 global.h

/* GLOBAL.H - RSAREF types and constants
 */

/* PROTOTYPES should be set to one if and only if the compiler supports
     function argument prototyping.
   The following makes PROTOTYPES default to 0 if it has not already
     been defined with C compiler flags.



Kaliski                                                         [Page 5]

RFC 1319              MD2 Message-Digest Algorithm            April 1992


 */
#ifndef PROTOTYPES
#define PROTOTYPES 0
#endif

/* POINTER defines a generic pointer type */
typedef unsigned char *POINTER;

/* UINT2 defines a two byte word */
typedef unsigned short int UINT2;

/* UINT4 defines a four byte word */
typedef unsigned long int UINT4;

/* PROTO_LIST is defined depending on how PROTOTYPES is defined above.
   If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it
     returns an empty list.
 */
#if PROTOTYPES
#define PROTO_LIST(list) list
#else
#define PROTO_LIST(list) ()
#endif

A.2 md2.h

/* MD2.H - header file for MD2C.C
 */

/* 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.
 */





Kaliski                                                         [Page 6]

RFC 1319              MD2 Message-Digest Algorithm            April 1992


typedef struct {
  unsigned char state[16];                                 /* state */
  unsigned char checksum[16];                           /* checksum */
  unsigned int count;                 /* number of bytes, modulo 16 */
  unsigned char buffer[16];                         /* input buffer */
} MD2_CTX;

void MD2Init PROTO_LIST ((MD2_CTX *));
void MD2Update PROTO_LIST
  ((MD2_CTX *, unsigned char *, unsigned int));
void MD2Final PROTO_LIST ((unsigned char [16], MD2_CTX *));

A.3 md2c.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,



Kaliski                                                         [Page 7]

RFC 1319              MD2 Message-Digest Algorithm            April 1992


  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 */
{



Kaliski                                                         [Page 8]

RFC 1319              MD2 Message-Digest Algorithm            April 1992


  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.
    */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区免费看视频| 日韩欧美一级片| 亚洲欧洲日韩在线| 色播五月激情综合网| 一二三区精品福利视频| 欧美日韩精品福利| 奇米888四色在线精品| 精品日韩欧美一区二区| 国产一区二区伦理| 国产精品色婷婷| 在线免费观看日韩欧美| 日韩国产精品91| 国产喂奶挤奶一区二区三区| 99视频有精品| 日韩精品亚洲一区二区三区免费| 欧美tickling网站挠脚心| 国产成人精品1024| 亚洲成人自拍网| 久久婷婷国产综合国色天香| 白白色 亚洲乱淫| 亚洲第一主播视频| 国产欧美一二三区| 欧美老人xxxx18| 韩国成人精品a∨在线观看| 成人欧美一区二区三区黑人麻豆| 欧美精品vⅰdeose4hd| 精品一区精品二区高清| 国产精品国产三级国产aⅴ中文 | 亚洲国产精品久久人人爱蜜臀| 欧美日韩精品一区二区| 国产精品亚洲视频| 午夜欧美2019年伦理| 日本一区二区三区国色天香| 欧美色男人天堂| 成人久久久精品乱码一区二区三区| 亚洲综合免费观看高清完整版在线| 欧美大片在线观看一区二区| 日本福利一区二区| 国产精品正在播放| 午夜成人免费电影| 亚洲欧美怡红院| 欧美xxxxx牲另类人与| 91黄视频在线| 高潮精品一区videoshd| 日韩中文字幕区一区有砖一区 | 最近日韩中文字幕| 欧美一级在线视频| 日本道免费精品一区二区三区| 国产精品一线二线三线| 香蕉久久一区二区不卡无毒影院 | 精品嫩草影院久久| 欧美综合一区二区| 99久久久久久| 国产不卡高清在线观看视频| 青青草国产精品亚洲专区无| 亚洲色欲色欲www| 日本一区二区三区在线不卡| 日韩色视频在线观看| 欧美三级一区二区| 在线观看不卡视频| 色婷婷国产精品| 一本色道久久加勒比精品| 国产+成+人+亚洲欧洲自线| 韩国午夜理伦三级不卡影院| 日韩成人一区二区三区在线观看| 亚洲综合视频在线| 一区二区三区在线影院| 国产精品成人一区二区三区夜夜夜| 久久日一线二线三线suv| 日韩午夜激情电影| 91精品在线免费观看| 6080午夜不卡| 精品视频一区三区九区| 欧美日韩一级大片网址| 欧美性猛交xxxxxx富婆| 欧美三级电影在线看| 欧美午夜精品电影| 欧美日韩一卡二卡三卡| 欧美精三区欧美精三区| 日韩一区二区高清| 欧美本精品男人aⅴ天堂| 精品久久久久av影院 | 日韩一区二区在线观看视频播放| 欧美日韩精品一二三区| 欧美日本韩国一区二区三区视频 | 亚洲欧洲制服丝袜| 一区二区三区日韩在线观看| 一区二区在线观看av| 91福利视频网站| 极品瑜伽女神91| 亚洲三级在线免费观看| 久久久噜噜噜久噜久久综合| 欧美精品在线一区二区三区| 欧美午夜在线一二页| 成人免费视频播放| 欧美欧美午夜aⅴ在线观看| 久久不见久久见免费视频1| 日韩免费观看高清完整版在线观看| 中文字幕一区二区三区在线播放 | 国产在线看一区| 欧美日韩午夜在线| 亚洲激情图片一区| 色婷婷综合在线| 欧美精品18+| 99精品欧美一区二区三区小说 | 国产欧美精品一区| 精品免费国产二区三区| 欧美日韩大陆一区二区| 国产亚洲精品免费| 久久久久99精品一区| 国产日韩亚洲欧美综合| 亚洲二区在线视频| 亚洲欧洲性图库| 麻豆国产欧美一区二区三区| 91久久香蕉国产日韩欧美9色| 777色狠狠一区二区三区| 日韩精品一区二区三区老鸭窝| 国产精品成人在线观看| 老司机精品视频导航| 久草这里只有精品视频| 欧美日韩在线三级| 国产精品久久久久影院亚瑟| 一片黄亚洲嫩模| 蜜桃精品视频在线观看| 国产91丝袜在线播放九色| 色综合久久综合| 中文字幕av一区二区三区高 | 一区二区国产盗摄色噜噜| 国产人伦精品一区二区| 国产欧美精品一区二区色综合 | 欧美精三区欧美精三区| 国产嫩草影院久久久久| 久久久国产综合精品女国产盗摄| 久久美女艺术照精彩视频福利播放| 黄页网站大全一区二区| 成人性生交大合| 精品国产乱码久久久久久闺蜜| 久久精品国产久精国产爱| 91年精品国产| 中文字幕欧美日本乱码一线二线 | 欧美一级高清大全免费观看| 亚洲va韩国va欧美va精品| 国模冰冰炮一区二区| 久久精品一级爱片| 白白色 亚洲乱淫| 亚洲日本丝袜连裤袜办公室| 成人高清视频在线观看| 国产亚洲成av人在线观看导航 | 亚洲综合区在线| 粉嫩欧美一区二区三区高清影视| 欧美大片一区二区| 午夜电影久久久| 欧美日韩免费一区二区三区视频| 中文字幕一区二区三区在线观看 | 日韩电影在线观看一区| 欧洲国内综合视频| 亚洲精品视频免费看| 国内精品免费在线观看| 日韩一级免费观看| 日本女人一区二区三区| 欧美三级一区二区| 午夜精品久久久久久久久久 | 欧美大白屁股肥臀xxxxxx| 亚洲动漫第一页| 日本伦理一区二区| 亚洲精品欧美激情| 色久综合一二码| 一区二区欧美国产| 91黄色激情网站| 亚洲国产成人va在线观看天堂| 91麻豆国产自产在线观看| 国产精品进线69影院| 97精品超碰一区二区三区| 国产精品国产三级国产a| 91麻豆.com| 亚洲在线中文字幕| 555www色欧美视频| 麻豆精品在线播放| 久久影视一区二区| 国产成人精品免费看| 中文字幕在线观看一区二区| 99精品欧美一区二区三区小说| 亚洲精品免费在线| 欧美丰满高潮xxxx喷水动漫| 丝袜亚洲另类丝袜在线| 欧美一级精品在线| 国产成人高清在线| 亚洲欧美日韩国产手机在线| 欧美亚洲国产bt| 欧美aaaaa成人免费观看视频| 日韩欧美的一区二区| 国产一二精品视频| 中文字幕一区av| 精品视频一区三区九区| 久久精品噜噜噜成人88aⅴ| 欧美激情综合网| 欧美日韩在线电影| 韩国在线一区二区| 亚洲精品成a人| 欧美一区二区三区影视|