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

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

?? md5官方算法源代碼.txt

?? 加密解密算法--MD5官方文檔
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
RFC 1321              MD5 Message-Digest Algorithm            April 1992


*/
  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++)



Rivest                                                         [Page 15]

RFC 1321              MD5 Message-Digest Algorithm            April 1992


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

A.4 mddriver.c

/* MDDRIVER.C - test driver for MD2, MD4 and MD5
 */

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

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

/* The following makes MD default to MD5 if it has not already been
  defined with C compiler flags.
 */
#ifndef MD
#define MD MD5
#endif

#include <stdio.h>
#include <time.h>
#include <string.h>
#include "global.h"
#if MD == 2
#include "md2.h"
#endif
#if MD == 4



Rivest                                                         [Page 16]

RFC 1321              MD5 Message-Digest Algorithm            April 1992


#include "md4.h"
#endif
#if MD == 5
#include "md5.h"
#endif

/* Length of test block, number of test blocks.
 */
#define TEST_BLOCK_LEN 1000
#define TEST_BLOCK_COUNT 1000

static void MDString PROTO_LIST ((char *));
static void MDTimeTrial PROTO_LIST ((void));
static void MDTestSuite PROTO_LIST ((void));
static void MDFile PROTO_LIST ((char *));
static void MDFilter PROTO_LIST ((void));
static void MDPrint PROTO_LIST ((unsigned char [16]));

#if MD == 2
#define MD_CTX MD2_CTX
#define MDInit MD2Init
#define MDUpdate MD2Update
#define MDFinal MD2Final
#endif
#if MD == 4
#define MD_CTX MD4_CTX
#define MDInit MD4Init
#define MDUpdate MD4Update
#define MDFinal MD4Final
#endif
#if MD == 5
#define MD_CTX MD5_CTX
#define MDInit MD5Init
#define MDUpdate MD5Update
#define MDFinal MD5Final
#endif

/* Main driver.

Arguments (may be any combination):
  -sstring - digests string
  -t       - runs time trial
  -x       - runs test script
  filename - digests file
  (none)   - digests standard input
 */
int main (argc, argv)
int argc;



Rivest                                                         [Page 17]

RFC 1321              MD5 Message-Digest Algorithm            April 1992


char *argv[];
{
  int i;

  if (argc > 1)
 for (i = 1; i < argc; i++)
   if (argv[i][0] == '-' && argv[i][1] == 's')
     MDString (argv[i] + 2);
   else if (strcmp (argv[i], "-t") == 0)
     MDTimeTrial ();
   else if (strcmp (argv[i], "-x") == 0)
     MDTestSuite ();
   else
     MDFile (argv[i]);
  else
 MDFilter ();

  return (0);
}

/* Digests a string and prints the result.
 */
static void MDString (string)
char *string;
{
  MD_CTX context;
  unsigned char digest[16];
  unsigned int len = strlen (string);

  MDInit (&context);
  MDUpdate (&context, string, len);
  MDFinal (digest, &context);

  printf ("MD%d (\"%s\") = ", MD, string);
  MDPrint (digest);
  printf ("\n");
}

/* Measures the time to digest TEST_BLOCK_COUNT TEST_BLOCK_LEN-byte
  blocks.
 */
static void MDTimeTrial ()
{
  MD_CTX context;
  time_t endTime, startTime;
  unsigned char block[TEST_BLOCK_LEN], digest[16];
  unsigned int i;




Rivest                                                         [Page 18]

RFC 1321              MD5 Message-Digest Algorithm            April 1992


  printf
 ("MD%d time trial. Digesting %d %d-byte blocks ...", MD,
  TEST_BLOCK_LEN, TEST_BLOCK_COUNT);

  /* Initialize block */
  for (i = 0; i < TEST_BLOCK_LEN; i++)
 block[i] = (unsigned char)(i & 0xff);

  /* Start timer */
  time (&startTime);

  /* Digest blocks */
  MDInit (&context);
  for (i = 0; i < TEST_BLOCK_COUNT; i++)
 MDUpdate (&context, block, TEST_BLOCK_LEN);
  MDFinal (digest, &context);

  /* Stop timer */
  time (&endTime);

  printf (" done\n");
  printf ("Digest = ");
  MDPrint (digest);
  printf ("\nTime = %ld seconds\n", (long)(endTime-startTime));
  printf
 ("Speed = %ld bytes/second\n",
  (long)TEST_BLOCK_LEN * (long)TEST_BLOCK_COUNT/(endTime-startTime));
}

/* Digests a reference suite of strings and prints the results.
 */
static void MDTestSuite ()
{
  printf ("MD%d test suite:\n", MD);

  MDString ("");
  MDString ("a");
  MDString ("abc");
  MDString ("message digest");
  MDString ("abcdefghijklmnopqrstuvwxyz");
  MDString
 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
  MDString
 ("1234567890123456789012345678901234567890\
1234567890123456789012345678901234567890");
}

/* Digests a file and prints the result.



Rivest                                                         [Page 19]

RFC 1321              MD5 Message-Digest Algorithm            April 1992


 */
static void MDFile (filename)
char *filename;
{
  FILE *file;
  MD_CTX context;
  int len;
  unsigned char buffer[1024], digest[16];

  if ((file = fopen (filename, "rb")) == NULL)
 printf ("%s can't be opened\n", filename);

  else {
 MDInit (&context);
 while (len = fread (buffer, 1, 1024, file))
   MDUpdate (&context, buffer, len);
 MDFinal (digest, &context);

 fclose (file);

 printf ("MD%d (%s) = ", MD, filename);
 MDPrint (digest);
 printf ("\n");
  }
}

/* Digests the standard input and prints the result.
 */
static void MDFilter ()
{
  MD_CTX context;
  int len;
  unsigned char buffer[16], digest[16];

  MDInit (&context);
  while (len = fread (buffer, 1, 16, stdin))
 MDUpdate (&context, buffer, len);
  MDFinal (digest, &context);

  MDPrint (digest);
  printf ("\n");
}

/* Prints a message digest in hexadecimal.
 */
static void MDPrint (digest)
unsigned char digest[16];
{



Rivest                                                         [Page 20]

RFC 1321              MD5 Message-Digest Algorithm            April 1992


  unsigned int i;

  for (i = 0; i < 16; i++)
 printf ("%02x", digest[i]);
}

A.5 Test suite

   The MD5 test suite (driver option "-x") should print the following
   results:

MD5 test suite:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") =
d174ab98d277d9f5a5611c2c9f419d9f
MD5 ("123456789012345678901234567890123456789012345678901234567890123456
78901234567890") = 57edf4a22be3c955ac49da2e2107b67a

Security Considerations

   The level of security discussed in this memo is considered to be
   sufficient for implementing very high security hybrid digital-
   signature schemes based on MD5 and a public-key cryptosystem.

Author's Address

   Ronald L. Rivest
   Massachusetts Institute of Technology
   Laboratory for Computer Science
   NE43-324
   545 Technology Square
   Cambridge, MA  02139-1986

   Phone: (617) 253-5880
   EMail: rivest@theory.lcs.mit.edu












Rivest                                                         [Page 21]


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产欧美一区二区成人| 欧美精品一区二区精品网| 欧美精品日韩一区| 中文字幕精品在线不卡| 偷拍一区二区三区| 97成人超碰视| 国产亚洲综合在线| 天天综合日日夜夜精品| 一本大道久久a久久综合婷婷| 2020国产成人综合网| 亚洲综合色区另类av| 国产在线视视频有精品| 欧美日韩www| 一区二区三区欧美久久| 99久久99久久久精品齐齐| 久久久噜噜噜久久中文字幕色伊伊| 午夜激情一区二区| av在线播放一区二区三区| 91精品国产一区二区三区| 一区二区三区在线免费视频| 99国产精品国产精品毛片| 久久精品人人做人人综合| 另类小说欧美激情| 日韩欧美不卡一区| 久色婷婷小香蕉久久| 91精品国产aⅴ一区二区| 香蕉成人啪国产精品视频综合网| 色综合天天天天做夜夜夜夜做| 国产精品系列在线| 成人av先锋影音| 欧美激情一二三区| 成人动漫在线一区| 国产精品乱子久久久久| 高清shemale亚洲人妖| 精品免费一区二区三区| 久久国产精品一区二区| 久久天天做天天爱综合色| 国产一区二区影院| 日韩女优av电影| 国产精品99久久久| 国产精品剧情在线亚洲| av一区二区三区在线| 亚洲欧洲无码一区二区三区| 成人av在线电影| 亚洲日本韩国一区| 欧美日韩国产中文| 久久精品国产99国产精品| 久久新电视剧免费观看| 国产综合色视频| 国产精品久99| 欧美在线视频日韩| 美洲天堂一区二卡三卡四卡视频 | 久久久五月婷婷| 精品在线观看免费| 国产蜜臀97一区二区三区| 99re这里都是精品| 亚洲一区视频在线| 欧美一区二区三级| 国产sm精品调教视频网站| 亚洲日本在线观看| 日韩欧美亚洲一区二区| 粉嫩高潮美女一区二区三区 | 亚洲一区二区三区中文字幕在线| 欧美日韩的一区二区| 国产99久久久精品| 一片黄亚洲嫩模| 欧美成人伊人久久综合网| 波多野结衣一区二区三区| 亚洲国产精品久久不卡毛片| 欧美va亚洲va在线观看蝴蝶网| 成人网男人的天堂| 日韩成人一级片| 中文字幕亚洲视频| 日韩欧美亚洲另类制服综合在线| a在线欧美一区| 久久草av在线| 一区二区三区欧美视频| 国产日韩欧美高清| 欧美日韩日日骚| 成人晚上爱看视频| 蜜臀精品一区二区三区在线观看| 国产精品伦理一区二区| 欧美电影免费观看高清完整版| 99精品在线观看视频| 久久成人av少妇免费| 亚洲欧洲成人av每日更新| 日韩欧美国产麻豆| 欧美私人免费视频| voyeur盗摄精品| 精品一二三四区| 香蕉加勒比综合久久| 亚洲欧美aⅴ...| 中文字幕亚洲欧美在线不卡| 国产视频视频一区| 日韩欧美你懂的| 欧美精品九九99久久| 91一区二区三区在线观看| 国产福利精品一区二区| 奇米影视一区二区三区| 亚洲成a天堂v人片| 亚洲一区二区视频在线| 亚洲婷婷在线视频| 欧美国产丝袜视频| 久久久噜噜噜久噜久久综合| 精品久久久久一区二区国产| 91精品国产欧美一区二区18| 欧美日韩视频专区在线播放| 在线观看欧美精品| 欧美性感一类影片在线播放| 欧日韩精品视频| 欧美日韩中文国产| 欧美三级蜜桃2在线观看| 欧美日韩午夜在线| 欧美美女网站色| 51精品国自产在线| 日韩视频免费观看高清完整版| 欧美电影一区二区| 日韩免费一区二区三区在线播放| 日韩一卡二卡三卡国产欧美| 91精品国产高清一区二区三区蜜臀| 欧美美女一区二区在线观看| 日韩一级片网址| 久久综合99re88久久爱| 久久影院电视剧免费观看| 欧美精品一区二| 欧美国产禁国产网站cc| 亚洲美女淫视频| 视频一区二区三区在线| 日本va欧美va精品| 国产一区二区91| 一道本成人在线| 91.com在线观看| 久久综合视频网| 国产精品女主播在线观看| 亚洲丝袜美腿综合| 亚洲一区欧美一区| 免费高清在线视频一区·| 久草在线在线精品观看| 国产91在线|亚洲| av电影一区二区| 欧美老肥妇做.爰bbww视频| 日韩欧美一二三区| 国产精品成人一区二区艾草| 一区二区三区在线高清| 青青国产91久久久久久| 国产成人精品在线看| 色狠狠综合天天综合综合| 日韩视频123| 亚洲激情自拍视频| 六月丁香婷婷色狠狠久久| 成人免费毛片嘿嘿连载视频| 色呦呦一区二区三区| 欧美一级精品大片| 亚洲婷婷综合色高清在线| 青青草原综合久久大伊人精品优势| 成人午夜又粗又硬又大| 欧美日韩精品福利| 欧美国产日韩a欧美在线观看| 亚洲国产精品久久久久秋霞影院 | 日韩综合一区二区| 国产aⅴ综合色| 91精品国产一区二区三区蜜臀| 中文字幕二三区不卡| 日本午夜精品一区二区三区电影 | 国内精品久久久久影院色| 91麻豆国产精品久久| 久久婷婷国产综合国色天香| 丝袜美腿高跟呻吟高潮一区| 97久久精品人人爽人人爽蜜臀| 日韩午夜在线观看视频| 亚洲一区在线观看网站| 成人激情免费网站| 欧美日韩三级视频| 最新日韩av在线| 国产在线国偷精品产拍免费yy| 欧美日本一道本在线视频| 日韩毛片在线免费观看| 国产成人在线免费观看| 日韩欧美国产午夜精品| 亚洲国产成人av网| 99视频一区二区三区| 国产亚洲欧美日韩日本| 久久国产精品免费| 宅男噜噜噜66一区二区66| 亚洲精品一二三区| av电影在线观看一区| 中文字幕精品在线不卡| 成人在线视频一区二区| 久久先锋影音av| 国产在线不卡视频| 久久久久久久综合色一本| 精品一区二区三区久久| 日韩视频在线你懂得| 日韩精品成人一区二区在线| 欧美性大战久久久久久久蜜臀| 一区二区三区四区精品在线视频| 91浏览器入口在线观看| 亚洲日本在线a| 欧美性大战xxxxx久久久| 亚洲国产精品久久人人爱|