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

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

?? md5.c

?? “網(wǎng)絡(luò)安全技術(shù)實踐與代碼詳解”實例代碼
?? C
字號:
/*  Copyright (C) 1999, 2000, 2002 Aladdin Enterprises.  All rights reserved.  This software is provided 'as-is', without any express or implied  warranty.  In no event will the authors be held liable for any damages  arising from the use of this software.  Permission is granted to anyone to use this software for any purpose,  including commercial applications, and to alter it and redistribute it  freely, subject to the following restrictions:  1. The origin of this software must not be misrepresented; you must not     claim that you wrote the original software. If you use this software     in a product, an acknowledgment in the product documentation would be     appreciated but is not required.  2. Altered source versions must be plainly marked as such, and must not be     misrepresented as being the original software.  3. This notice may not be removed or altered from any source distribution.  L. Peter Deutsch  ghost@aladdin.com *//* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ *//*  Independent implementation of MD5 (RFC 1321).  This code implements the MD5 Algorithm defined in RFC 1321, whose  text is available at	http://www.ietf.org/rfc/rfc1321.txt  The code is derived from the text of the RFC, including the test suite  (section A.5) but excluding the rest of Appendix A.  It does not include  any code or documentation that is identified in the RFC as being  copyrighted.  The original and principal author of md5.c is L. Peter Deutsch  <ghost@aladdin.com>.  Other authors are noted in the change history  that follows (in reverse chronological order):  2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order	either statically or dynamically; added missing #include <string.h>	in library.  2002-03-11 lpd Corrected argument list for main(), and added int return	type, in test program and T value program.  2002-02-21 lpd Added missing #include <stdio.h> in test program.  2000-07-03 lpd Patched to eliminate warnings about "constant is	unsigned in ANSI C, signed in traditional"; made test program	self-checking.  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).  1999-05-03 lpd Original version. */#include "md5.h"#include <string.h>#undef BYTE_ORDER	/* 1 = big-endian, -1 = little-endian, 0 = unknown */#ifdef ARCH_IS_BIG_ENDIAN#  define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1)#else#  define BYTE_ORDER 0#endif#define T_MASK ((md5_word_t)~0)#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)#define T3    0x242070db#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)#define T6    0x4787c62a#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)#define T9    0x698098d8#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)#define T13    0x6b901122#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)#define T16    0x49b40821#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)#define T19    0x265e5a51#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)#define T22    0x02441453#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)#define T25    0x21e1cde6#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)#define T28    0x455a14ed#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)#define T31    0x676f02d9#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)#define T35    0x6d9d6122#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)#define T38    0x4bdecfa9#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)#define T41    0x289b7ec6#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)#define T44    0x04881d05#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)#define T47    0x1fa27cf8#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)#define T50    0x432aff97#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)#define T53    0x655b59c3#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)#define T57    0x6fa87e4f#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)#define T60    0x4e0811a1#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)#define T63    0x2ad7d2bb#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)static voidmd5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/){    md5_word_t	a = pms->abcd[0], b = pms->abcd[1],	c = pms->abcd[2], d = pms->abcd[3];    md5_word_t t;#if BYTE_ORDER > 0    /* Define storage only for big-endian CPUs. */    md5_word_t X[16];#else    /* Define storage for little-endian or both types of CPUs. */    md5_word_t xbuf[16];    const md5_word_t *X;#endif    {#if BYTE_ORDER == 0	/*	 * Determine dynamically whether this is a big-endian or	 * little-endian machine, since we can use a more efficient	 * algorithm on the latter.	 */	static const int w = 1;	if (*((const md5_byte_t *)&w)) /* dynamic little-endian */#endif#if BYTE_ORDER <= 0		/* little-endian */	{	    /*	     * On little-endian machines, we can process properly aligned	     * data without copying it.	     */	    if (!((data - (const md5_byte_t *)0) & 3)) {		/* data are properly aligned */		X = (const md5_word_t *)data;	    } else {		/* not aligned */		memcpy(xbuf, data, 64);		X = xbuf;	    }	}#endif#if BYTE_ORDER == 0	else			/* dynamic big-endian */#endif#if BYTE_ORDER >= 0		/* big-endian */	{	    /*	     * On big-endian machines, we must arrange the bytes in the	     * right order.	     */	    const md5_byte_t *xp = data;	    int i;#  if BYTE_ORDER == 0	    X = xbuf;		/* (dynamic only) */#  else#    define xbuf X		/* (static only) */#  endif	    for (i = 0; i < 16; ++i, xp += 4)		xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);	}#endif    }#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))    /* Round 1. */    /* Let [abcd k s i] denote the operation       a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))#define SET(a, b, c, d, k, s, Ti)\  t = a + F(b,c,d) + X[k] + Ti;\  a = ROTATE_LEFT(t, s) + b    /* Do the following 16 operations. */    SET(a, b, c, d,  0,  7,  T1);    SET(d, a, b, c,  1, 12,  T2);    SET(c, d, a, b,  2, 17,  T3);    SET(b, c, d, a,  3, 22,  T4);    SET(a, b, c, d,  4,  7,  T5);    SET(d, a, b, c,  5, 12,  T6);    SET(c, d, a, b,  6, 17,  T7);    SET(b, c, d, a,  7, 22,  T8);    SET(a, b, c, d,  8,  7,  T9);    SET(d, a, b, c,  9, 12, T10);    SET(c, d, a, b, 10, 17, T11);    SET(b, c, d, a, 11, 22, T12);    SET(a, b, c, d, 12,  7, T13);    SET(d, a, b, c, 13, 12, T14);    SET(c, d, a, b, 14, 17, T15);    SET(b, c, d, a, 15, 22, T16);#undef SET     /* Round 2. */     /* Let [abcd k s i] denote the operation          a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))#define SET(a, b, c, d, k, s, Ti)\  t = a + G(b,c,d) + X[k] + Ti;\  a = ROTATE_LEFT(t, s) + b     /* Do the following 16 operations. */    SET(a, b, c, d,  1,  5, T17);    SET(d, a, b, c,  6,  9, T18);    SET(c, d, a, b, 11, 14, T19);    SET(b, c, d, a,  0, 20, T20);    SET(a, b, c, d,  5,  5, T21);    SET(d, a, b, c, 10,  9, T22);    SET(c, d, a, b, 15, 14, T23);    SET(b, c, d, a,  4, 20, T24);    SET(a, b, c, d,  9,  5, T25);    SET(d, a, b, c, 14,  9, T26);    SET(c, d, a, b,  3, 14, T27);    SET(b, c, d, a,  8, 20, T28);    SET(a, b, c, d, 13,  5, T29);    SET(d, a, b, c,  2,  9, T30);    SET(c, d, a, b,  7, 14, T31);    SET(b, c, d, a, 12, 20, T32);#undef SET     /* Round 3. */     /* Let [abcd k s t] denote the operation          a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */#define H(x, y, z) ((x) ^ (y) ^ (z))#define SET(a, b, c, d, k, s, Ti)\  t = a + H(b,c,d) + X[k] + Ti;\  a = ROTATE_LEFT(t, s) + b     /* Do the following 16 operations. */    SET(a, b, c, d,  5,  4, T33);    SET(d, a, b, c,  8, 11, T34);    SET(c, d, a, b, 11, 16, T35);    SET(b, c, d, a, 14, 23, T36);    SET(a, b, c, d,  1,  4, T37);    SET(d, a, b, c,  4, 11, T38);    SET(c, d, a, b,  7, 16, T39);    SET(b, c, d, a, 10, 23, T40);    SET(a, b, c, d, 13,  4, T41);    SET(d, a, b, c,  0, 11, T42);    SET(c, d, a, b,  3, 16, T43);    SET(b, c, d, a,  6, 23, T44);    SET(a, b, c, d,  9,  4, T45);    SET(d, a, b, c, 12, 11, T46);    SET(c, d, a, b, 15, 16, T47);    SET(b, c, d, a,  2, 23, T48);#undef SET     /* Round 4. */     /* Let [abcd k s t] denote the operation          a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */#define I(x, y, z) ((y) ^ ((x) | ~(z)))#define SET(a, b, c, d, k, s, Ti)\  t = a + I(b,c,d) + X[k] + Ti;\  a = ROTATE_LEFT(t, s) + b     /* Do the following 16 operations. */    SET(a, b, c, d,  0,  6, T49);    SET(d, a, b, c,  7, 10, T50);    SET(c, d, a, b, 14, 15, T51);    SET(b, c, d, a,  5, 21, T52);    SET(a, b, c, d, 12,  6, T53);    SET(d, a, b, c,  3, 10, T54);    SET(c, d, a, b, 10, 15, T55);    SET(b, c, d, a,  1, 21, T56);    SET(a, b, c, d,  8,  6, T57);    SET(d, a, b, c, 15, 10, T58);    SET(c, d, a, b,  6, 15, T59);    SET(b, c, d, a, 13, 21, T60);    SET(a, b, c, d,  4,  6, T61);    SET(d, a, b, c, 11, 10, T62);    SET(c, d, a, b,  2, 15, T63);    SET(b, c, d, a,  9, 21, T64);#undef SET     /* Then perform the following additions. (That is increment each        of the four registers by the value it had before this block        was started.) */    pms->abcd[0] += a;    pms->abcd[1] += b;    pms->abcd[2] += c;    pms->abcd[3] += d;}void md5_init(md5_state_t *pms){    pms->count[0] = pms->count[1] = 0;    pms->abcd[0] = 0x67452301;    pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;    pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;    pms->abcd[3] = 0x10325476;}void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes){    const md5_byte_t *p = data;    int left = nbytes;    int offset = (pms->count[0] >> 3) & 63;    md5_word_t nbits = (md5_word_t)(nbytes << 3);    if (nbytes <= 0)	return;    /* Update the message length. */    pms->count[1] += nbytes >> 29;    pms->count[0] += nbits;    if (pms->count[0] < nbits)	pms->count[1]++;    /* Process an initial partial block. */    if (offset) {	int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);	memcpy(pms->buf + offset, p, copy);	if (offset + copy < 64)	    return;	p += copy;	left -= copy;	md5_process(pms, pms->buf);    }    /* Process full blocks. */    for (; left >= 64; p += 64, left -= 64)	md5_process(pms, p);    /* Process a final partial block. */    if (left)	memcpy(pms->buf, p, left);}void md5_finish(md5_state_t *pms, md5_byte_t digest[16]){    static const md5_byte_t pad[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    };    md5_byte_t data[8];    int i;    /* Save the length before padding. */    for (i = 0; i < 8; ++i)	data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));    /* Pad to 56 bytes mod 64. */    md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);    /* Append the length. */    md5_append(pms, data, 8);    for (i = 0; i < 16; ++i)	digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合网色综合| 色一区在线观看| 日韩av中文在线观看| 亚洲午夜在线观看视频在线| 一区二区三区日韩欧美精品| 亚洲摸摸操操av| 亚洲女厕所小便bbb| 亚洲一区二区欧美| 午夜精品久久一牛影视| 日本怡春院一区二区| 黑人精品欧美一区二区蜜桃| 国产精品一二三| 日本福利一区二区| 欧美日本免费一区二区三区| 精品国产伦理网| 国产精品国产自产拍高清av王其| 亚洲天堂福利av| 日韩精品福利网| 国产精品中文字幕欧美| 97精品久久久久中文字幕| 在线视频欧美区| 日韩女优毛片在线| 国产精品视频麻豆| 亚洲国产精品麻豆| 国产精品一区免费在线观看| 91老司机福利 在线| 4438x亚洲最大成人网| 中文字幕av不卡| 五月天婷婷综合| 国产99久久久国产精品潘金| 91国偷自产一区二区开放时间 | 国产精品三级电影| 性做久久久久久免费观看欧美| 久久99国产精品久久99果冻传媒| av不卡一区二区三区| 51精品国自产在线| 亚洲六月丁香色婷婷综合久久| 青青草一区二区三区| aa级大片欧美| 精品国产三级a在线观看| 一个色妞综合视频在线观看| 国产精品66部| 日韩午夜激情视频| 亚洲国产精品自拍| 99国产精品久久久久久久久久 | 成人h动漫精品一区二区| 在线一区二区视频| 国产视频亚洲色图| 日韩国产高清影视| 91国在线观看| 中文字幕一区二区不卡| 国产精品一区二区无线| 欧美一区二区三区免费大片| 亚洲女女做受ⅹxx高潮| 成人免费黄色在线| 精品国产乱码久久久久久久| 亚洲1区2区3区视频| 91老师片黄在线观看| 国产精品欧美一级免费| 国产精品888| 精品国产伦一区二区三区观看体验| 午夜久久久久久| 91国偷自产一区二区三区成为亚洲经典| 欧美国产日韩在线观看| 国产aⅴ精品一区二区三区色成熟| 精品日韩欧美在线| 老汉av免费一区二区三区| 欧美一区二区三区在线观看| 人人爽香蕉精品| 欧美一区二区私人影院日本| 亚洲成人av在线电影| 欧美视频在线一区二区三区| 亚洲二区视频在线| 欧美日韩在线直播| 午夜欧美电影在线观看| 在线播放国产精品二区一二区四区 | 经典三级视频一区| 日韩一级欧美一级| 国内成+人亚洲+欧美+综合在线| 精品伦理精品一区| 国产传媒一区在线| 国产精品成人网| 欧美影片第一页| 亚洲观看高清完整版在线观看 | 精品福利一二区| 国产主播一区二区| 国产精品久久久久久久久晋中| 成人黄色综合网站| 一区二区在线看| 6080午夜不卡| 国产剧情av麻豆香蕉精品| 欧美激情一区在线| 欧美日韩综合不卡| 国产一区二区三区日韩| 亚洲欧洲性图库| 制服丝袜亚洲播放| 国产福利不卡视频| 亚洲靠逼com| 欧美变态口味重另类| 成人99免费视频| 五月婷婷综合激情| 国产亚洲一本大道中文在线| av一区二区三区| 婷婷亚洲久悠悠色悠在线播放| 精品久久人人做人人爽| 91香蕉视频在线| 男人操女人的视频在线观看欧美| 国产婷婷色一区二区三区四区 | 国产九色sp调教91| 亚洲国产va精品久久久不卡综合| 精品福利二区三区| 色94色欧美sute亚洲线路一久| 日本美女视频一区二区| 亚洲欧洲精品天堂一级| 日韩午夜av电影| 91在线视频免费91| 国产综合色产在线精品| 亚洲视频一区二区在线观看| 欧美成人vr18sexvr| 色偷偷88欧美精品久久久| 精品影视av免费| 亚洲国产日产av| 国产精品美女久久久久久久| 日韩片之四级片| 欧美日韩国产一级片| 成人app在线| 国产乱对白刺激视频不卡| 日本色综合中文字幕| 亚洲男女一区二区三区| 中文无字幕一区二区三区 | 亚洲最大成人网4388xx| 国产三级三级三级精品8ⅰ区| 国产日韩欧美亚洲| 欧美一级在线免费| 欧美视频自拍偷拍| 欧洲一区在线电影| 色婷婷国产精品综合在线观看| 成人精品高清在线| 国产精品资源在线| 国产成人在线影院| 国产美女主播视频一区| 精品一区二区三区香蕉蜜桃 | 五月激情丁香一区二区三区| 亚洲色图欧美激情| 1024成人网| 亚洲欧美在线另类| 国产精品久久三| 亚洲欧美在线高清| 亚洲精品网站在线观看| 亚洲人一二三区| 一区二区三区不卡视频在线观看| 亚洲毛片av在线| 亚洲综合激情网| 亚洲国产aⅴ天堂久久| 天天操天天综合网| 久久精品国产99久久6| 激情五月播播久久久精品| 老汉av免费一区二区三区| 在线观看视频一区二区| 成人看片黄a免费看在线| 国产一区二区免费在线| 国产成人午夜精品影院观看视频| 国产高清久久久| 成人午夜碰碰视频| 97se亚洲国产综合自在线| 91传媒视频在线播放| 欧美日本韩国一区| 久久一区二区视频| 国产精品国产三级国产有无不卡 | av男人天堂一区| 99国产精品久久久久| 欧美亚洲精品一区| 欧美一区二区三区小说| 欧美大片拔萝卜| 国产精品拍天天在线| 亚洲一二三四在线| 麻豆精品国产传媒mv男同| 国产高清精品久久久久| 色婷婷狠狠综合| 欧美成人video| 亚洲丝袜精品丝袜在线| 日韩电影在线观看一区| 国产精品18久久久久久久久 | 精品综合免费视频观看| 成人美女在线视频| 欧美日韩一区三区四区| 久久精品一区四区| 亚洲va中文字幕| 国产成人综合在线播放| 欧美理论片在线| 欧美激情在线免费观看| 日本不卡视频一二三区| av午夜精品一区二区三区| 欧美一级日韩免费不卡| 亚洲欧美日韩国产中文在线| 九九九久久久精品| 欧美日韩专区在线| 亚洲视频狠狠干| 国产精品99久久久| 日韩精品最新网址|