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

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

?? md5.c

?? 基于linux的md5校驗源碼
?? C
字號:
/* * This code implements the MD5 message-digest algorithm. * The algorithm is due to Ron Rivest.  This code was * written by Colin Plumb in 1993, no copyright is claimed. * This code is in the public domain; do with it what you wish. * * Equivalent code is available from RSA Data Security, Inc. * This code has been tested against that, and is equivalent, * except that you don't need to include two pages of legalese * with every copy. * * To compute the message digest of a chunk of bytes, declare an * MD5Context structure, pass it to MD5Init, call MD5Update as * needed on buffers full of bytes, and then call MD5Final, which * will fill a supplied 16-byte array with the digest. */#include <string.h>		/* for memcpy() */#include "md5.h"void byteReverse(unsigned char *buf, unsigned longs);enum { UNKNOWN, MSB1st, LSB1st } byteOrder = UNKNOWN;void setByteOrder(void) {	union {		unsigned short int usi;		unsigned char uc[2];	} w;	w.usi = 0x1234;	if (w.uc[0] == 0x12)		byteOrder = MSB1st;	else		byteOrder = LSB1st;}#ifndef ASM_MD5void byteReverse(unsigned char *buf, unsigned longs){    uint32 t;    if (byteOrder == UNKNOWN)	setByteOrder();    if (byteOrder == LSB1st)	return;    do {	t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |	    ((unsigned) buf[1] << 8 | buf[0]);	*(uint32 *) buf = t;	buf += 4;    } while (--longs);}#endif/* * Start MD5 accumulation.  Set bit count to 0 and buffer to mysterious * initialization constants. */void MD5Init(struct MD5Context *ctx){    ctx->buf[0] = 0x67452301;    ctx->buf[1] = 0xefcdab89;    ctx->buf[2] = 0x98badcfe;    ctx->buf[3] = 0x10325476;    ctx->bits[0] = 0;    ctx->bits[1] = 0;}/* * Update context to reflect the concatenation of another buffer full * of bytes. */void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len){    uint32 t;    /* Update bitcount */    t = ctx->bits[0];    if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)	ctx->bits[1]++;		/* Carry from low to high */    ctx->bits[1] += len >> 29;    t = (t >> 3) & 0x3f;	/* Bytes already in shsInfo->data */    /* Handle any leading odd-sized chunks */    if (t) {	unsigned char *p = (unsigned char *) ctx->in + t;	t = 64 - t;	if (len < t) {	    memcpy(p, buf, len);	    return;	}	memcpy(p, buf, t);	byteReverse(ctx->in, 16);	MD5Transform(ctx->buf, (uint32 *) ctx->in);	buf += t;	len -= t;    }    /* Process data in 64-byte chunks */    while (len >= 64) {	memcpy(ctx->in, buf, 64);	byteReverse(ctx->in, 16);	MD5Transform(ctx->buf, (uint32 *) ctx->in);	buf += 64;	len -= 64;    }    /* Handle any remaining bytes of data. */    memcpy(ctx->in, buf, len);}/* * Final wrapup - pad to 64-byte boundary with the bit pattern  * 1 0* (64-bit count of bits processed, MSB-first) */void MD5Final(unsigned char digest[16], struct MD5Context *ctx){    unsigned count;    unsigned char *p;    /* Compute number of bytes mod 64 */    count = (ctx->bits[0] >> 3) & 0x3F;    /* Set the first char of padding to 0x80.  This is safe since there is       always at least one byte free */    p = ctx->in + count;    *p++ = 0x80;    /* Bytes of padding needed to make 64 bytes */    count = 64 - 1 - count;    /* Pad out to 56 mod 64 */    if (count < 8) {	/* Two lots of padding:  Pad the first block to 64 bytes */	memset(p, 0, count);	byteReverse(ctx->in, 16);	MD5Transform(ctx->buf, (uint32 *) ctx->in);	/* Now fill the next block with 56 bytes */	memset(ctx->in, 0, 56);    } else {	/* Pad block to 56 bytes */	memset(p, 0, count - 8);    }    byteReverse(ctx->in, 14);    /* Append length in bits and transform */    ((uint32 *) ctx->in)[14] = ctx->bits[0];    ((uint32 *) ctx->in)[15] = ctx->bits[1];    MD5Transform(ctx->buf, (uint32 *) ctx->in);    byteReverse((unsigned char *) ctx->buf, 4);    memcpy(digest, ctx->buf, 16);    memset(ctx, 0, sizeof(ctx));	/* In case it's sensitive */}#ifndef ASM_MD5/* The four core functions - F1 is optimized somewhat *//* #define F1(x, y, z) (x & y | ~x & z) */#define F1(x, y, z) (z ^ (x & (y ^ z)))#define F2(x, y, z) F1(z, x, y)#define F3(x, y, z) (x ^ y ^ z)#define F4(x, y, z) (y ^ (x | ~z))/* This is the central step in the MD5 algorithm. */#define MD5STEP(f, w, x, y, z, data, s) \	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )/* * The core of the MD5 algorithm, this alters an existing MD5 hash to * reflect the addition of 16 longwords of new data.  MD5Update blocks * the data and converts bytes into longwords for this routine. */void MD5Transform(uint32 buf[4], uint32 const in[16]){    register uint32 a, b, c, d;    a = buf[0];    b = buf[1];    c = buf[2];    d = buf[3];    MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);    MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);    MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);    MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);    MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);    MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);    MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);    MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);    MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);    MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);    MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);    MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);    MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);    MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);    MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);    MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);    MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);    MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);    MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);    MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);    MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);    MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);    MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);    MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);    MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);    MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);    MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);    MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);    MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);    MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);    MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);    MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);    MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);    MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);    MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);    MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);    MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);    MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);    MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);    MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);    MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);    MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);    MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);    MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);    MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);    MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);    MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);    MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);    MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);    MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);    MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);    MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);    MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);    MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);    MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);    MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);    MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);    MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);    MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);    MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);    MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);    MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);    MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);    MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);    buf[0] += a;    buf[1] += b;    buf[2] += c;    buf[3] += d;}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久电影网站中文字幕| 91视频免费播放| 国产校园另类小说区| 成人一二三区视频| 伊人夜夜躁av伊人久久| 欧美日韩国产中文| 久久国产生活片100| 国产日产精品1区| 99久久精品一区| 亚洲国产成人av网| 精品免费99久久| zzijzzij亚洲日本少妇熟睡| 一区二区在线电影| 香蕉久久一区二区不卡无毒影院| 69久久99精品久久久久婷婷| 国产在线视视频有精品| 中文字幕视频一区二区三区久| 91九色02白丝porn| 蜜臀久久99精品久久久画质超高清| 欧美精品一区在线观看| 99国内精品久久| 日韩经典中文字幕一区| 久久久国际精品| 日本丶国产丶欧美色综合| 免费观看在线综合| 国产精品欧美精品| 9191精品国产综合久久久久久| 国产精品影视在线观看| 亚洲精品美腿丝袜| 日韩欧美视频在线| 国内精品自线一区二区三区视频| 丝袜诱惑亚洲看片| 精品国产91久久久久久久妲己| 蜜臀精品一区二区三区在线观看| 国产欧美一区视频| 欧美日韩一区三区四区| 精品亚洲成a人| 亚洲乱码日产精品bd| 日韩三级伦理片妻子的秘密按摩| 成人免费av网站| 日韩主播视频在线| 日本一区二区成人| 91麻豆精品国产91久久久使用方法| 国产福利一区在线| 性做久久久久久免费观看欧美| 国产日韩欧美综合一区| 欧美日韩亚洲综合| 国产精品1区2区| 婷婷夜色潮精品综合在线| 亚洲国产成人在线| 日韩一区二区三| 91丨porny丨在线| 国产一区啦啦啦在线观看| 亚洲一二三四在线观看| 欧美激情中文不卡| 日韩一区二区影院| 一本一道久久a久久精品综合蜜臀| 久久精品久久精品| 亚洲国产日韩综合久久精品| 国产亚洲成av人在线观看导航| 欧美久久久久中文字幕| 成人av动漫在线| 国产在线一区观看| 亚洲成人在线网站| 亚洲男女毛片无遮挡| 久久久亚洲精品石原莉奈| 欧美电影在哪看比较好| 亚洲国产精品一区二区久久恐怖片 | 在线播放日韩导航| 欧美日韩视频在线第一区| 日韩欧美国产不卡| 欧美成人欧美edvon| 亚洲精品写真福利| 91福利视频久久久久| 国产成人免费视频| 久久激情综合网| 亚洲成av人片在线| 亚洲欧洲制服丝袜| 国产清纯在线一区二区www| 日韩西西人体444www| 欧美日韩一二三| 在线欧美日韩精品| 91视频免费观看| 不卡av在线网| 国产**成人网毛片九色| 韩日精品视频一区| 美女看a上一区| 国产人伦精品一区二区| 色香蕉久久蜜桃| 蜜桃精品视频在线观看| 亚洲电影视频在线| 亚洲精品欧美激情| 亚洲摸摸操操av| 亚洲日本成人在线观看| 中文字幕在线观看不卡| 国产精品卡一卡二| 亚洲黄色免费电影| 欧美日韩成人高清| 日本伊人色综合网| 久久婷婷国产综合国色天香 | 国产成人精品1024| 国产麻豆精品在线观看| 欧美日韩精品免费观看视频| 欧美午夜在线一二页| 在线免费观看日本欧美| 91久久精品一区二区二区| 91在线视频网址| 色悠悠久久综合| 日本精品裸体写真集在线观看| 99九九99九九九视频精品| 99视频一区二区三区| 99re成人在线| 91国产视频在线观看| 91成人在线免费观看| 欧美系列日韩一区| 制服视频三区第一页精品| 日韩一区二区三区观看| 欧美成人精品福利| 亚洲精品一区二区三区福利 | 亚洲欧美国产三级| 亚洲一区精品在线| 日韩精品五月天| 蜜桃av一区二区| 国产揄拍国内精品对白| 风间由美一区二区三区在线观看| 成人精品gif动图一区| 色先锋资源久久综合| 欧美美女bb生活片| 欧美成人伊人久久综合网| 久久品道一品道久久精品| 国产精品久久久久影视| 亚洲乱码一区二区三区在线观看| 亚洲电影一区二区三区| 琪琪久久久久日韩精品| 国产一本一道久久香蕉| av成人老司机| 欧美性做爰猛烈叫床潮| 欧美一区二区私人影院日本| 久久女同性恋中文字幕| 国产精品成人一区二区三区夜夜夜 | 亚洲精品国产视频| 日韩国产精品大片| 国产精品亚洲视频| 91麻豆自制传媒国产之光| 欧美日韩精品电影| 亚洲精品一区二区三区影院 | 在线观看欧美日本| 日韩欧美亚洲国产精品字幕久久久| 国产欧美一区二区精品仙草咪| 亚洲色图丝袜美腿| 日本视频在线一区| 国产91丝袜在线18| 欧美色国产精品| 精品粉嫩超白一线天av| 亚洲欧美经典视频| 久久精品久久精品| 91在线视频免费观看| 欧美一级午夜免费电影| 国产精品理论在线观看| 午夜成人免费视频| 国产精品一区二区黑丝| 色天天综合色天天久久| 欧美α欧美αv大片| 中文字幕一区二区日韩精品绯色| 丝袜亚洲另类欧美| 成人国产精品免费观看动漫| 欧美日本乱大交xxxxx| 欧美激情中文不卡| 日韩精品亚洲一区| 99精品黄色片免费大全| 日韩欧美一级二级| 亚洲人成网站精品片在线观看| 日本视频一区二区| 91免费国产视频网站| 欧美成人一区二区三区片免费 | 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲欧洲综合另类| 国产一区日韩二区欧美三区| 在线观看成人小视频| 国产调教视频一区| 亚洲成人动漫在线观看| 成人在线视频一区二区| 91精品国产福利在线观看| 日韩毛片精品高清免费| 精品一区二区三区欧美| 在线观看免费成人| 欧美韩日一区二区三区| 免费人成在线不卡| 色av一区二区| 国产欧美精品区一区二区三区| 日韩av一区二区在线影视| 91香蕉视频在线| 久久免费精品国产久精品久久久久| 亚洲成人一区二区在线观看| aaa亚洲精品一二三区| 久久久美女艺术照精彩视频福利播放 | 中文字幕一区二区三区av| 国产做a爰片久久毛片| 91精品国产91久久久久久最新毛片| 色婷婷综合久久久久中文一区二区 |