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

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

?? md5.c

?? vxworks的完整的源代碼
?? C
字號:
/* md5.c - RSA Data Security, Inc., MD5 message-digest algorithm *//* Copyright 1984 - 2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01a,29mar01,spm  file creation: copied from version 01g of tor2_0.open_stack                 branch (wpwr VOB) for unified code base*//* * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All * rights reserved. * * License to copy and use this software is granted provided that it * is identified as the "RSA Data Security, Inc. MD5 Message-Digest * Algorithm" in all material mentioning or referencing this software * or this function. * * License is also granted to make and use derivative works provided * that such works are identified as "derived from the RSA Data * Security, Inc. MD5 Message-Digest Algorithm" in all material * mentioning or referencing the derived work. * * 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. *//*DESCRIPTIONThis module implements the Message Digest 5 (MD5) algorithm.  To createa message digest of a block of text the following is used:MD5_CTX_T ctxMD5Init(&ctx)MD5Update(&ctx, text)MD5Final(digest, &ctx)Simply create a context and initialize it.  Then use MD5Update toadd to the message digest.  Note that MD5Update can be called any numberof times.  Then call MD5Final which creates and stores the calculated16 byte digest.INCLUDES: md5.hSEE ALSO: RFC 1321*/#ifdef RIP_MD5/* defines */#define MD5_TEST 0/* includes */#include "string.h"#include "vxWorks.h"#include "rip/md5.h"/* forward declarations */LOCAL void MD5Transform(ULONG [4], UCHAR [64]);/* locals */LOCAL UCHAR PADDING[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    };/* defines *//* Constants for MD5 Transform routine  */ #define S11 7#define S12 12#define S13 17#define S14 22#define S21 5#define S22 9#define S23 14#define S24 20#define S31 4#define S32 11#define S33 16#define S34 23#define S41 6#define S42 10#define S43 15#define S44 21/* macros *//* The so called "unbiased" bitwise auxiliary functions! */#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))#define H(x, y, z) ((x) ^ (y) ^ (z))#define I(x, y, z) ((y) ^ ((x) | (~z)))/* ROTATE_LEFT rotates x left n bits (circular left shift) */#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))/* Rounds 1(FF), 2(GG), 3(HH), and 4(II) transformations */#define FF(a, b, c, d, x, s, ac) \        { \        (a) += (F((b), (c), (d)) + (x) + (ULONG)(ac)); \        (a) = ROTATE_LEFT((a), (s)); \        (a) += (b); \        }#define GG(a, b, c, d, x, s, ac) \        { \        (a) += (G((b), (c), (d)) + (x) + (ULONG)(ac)); \        (a) = ROTATE_LEFT((a), (s)); \        (a) += (b); \        }#define HH(a, b, c, d, x, s, ac) \        { \        (a) += (H((b), (c), (d)) + (x) + (ULONG)(ac)); \        (a) = ROTATE_LEFT((a), (s)); \        (a) += (b); \        }#define II(a, b, c, d, x, s, ac) \        { \        (a) += (I((b), (c), (d)) + (x) + (ULONG)(ac)); \        (a) = ROTATE_LEFT((a), (s)); \        (a) += (b); \        }/**************************************************************************** MD5Transform - Basic MD5 transformation.* * Transforms the state registers based on the given block.** RETURNS: A new state.** NOMANUAL*/LOCAL void MD5Transform    (    ULONG state[4],    UCHAR block[64]    )    {    ULONG a, b, c, d;    ULONG x[16];    UINT i, j;    /* Copy block[j] into x[i] */    for (i = 0, j = 0; j < 64; i++, j += 4)        {        x[i] = (((ULONG)block[j]) |                (((ULONG)block[j+1]) << 8) |                (((ULONG)block[j+2]) << 16) |                (((ULONG)block[j+3]) << 24));        }    /* Copy context->state[] to working vars */    a = state[0];    b = state[1];    c = state[2];    d = state[3];    /*     * The last argument of the following function is based of the     * sine funciton.  A 64 element table T[1...64] has been constructed     * where T[i] denotes the i-th element of the table which is equal     * to the integer part of 4294967296 times abs(sin(i)), i is in radians.     * See the appendix of RFC 1321 for actual values.     */    /* Round 1 */    FF(a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */    FF(d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */    FF(c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */    FF(b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */    FF(a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */    FF(d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */    FF(c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */    FF(b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */    FF(a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */    FF(d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */    FF(c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */    FF(b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */    FF(a, b, c, d, x[12], S11, 0x6b901122); /* 13 */    FF(d, a, b, c, x[13], S12, 0xfd987193); /* 14 */    FF(c, d, a, b, x[14], S13, 0xa679438e); /* 15 */    FF(b, c, d, a, x[15], S14, 0x49b40821); /* 16 */    /* Round 2 */    GG(a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */    GG(d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */    GG(c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */    GG(b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */    GG(a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */    GG(d, a, b, c, x[10], S22,  0x2441453); /* 22 */    GG(c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */    GG(b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */    GG(a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */    GG(d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */    GG(c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */    GG(b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */    GG(a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */    GG(d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */    GG(c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */    GG(b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */    /* Round 3 */    HH(a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */    HH(d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */    HH(c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */    HH(b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */    HH(a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */    HH(d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */    HH(c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */    HH(b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */    HH(a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */    HH(d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */    HH(c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */    HH(b, c, d, a, x[ 6], S34,  0x4881d05); /* 44 */    HH(a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */    HH(d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */    HH(c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */    HH(b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */    /* Round 4 */    II(a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */    II(d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */    II(c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */    II(b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */    II(a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */    II(d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */    II(c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */    II(b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */    II(a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */    II(d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */    II(c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */    II(b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */    II(a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */    II(d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */    II(c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */    II(b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */    /* increment each state register by the new value */    state[0] += a;    state[1] += b;    state[2] += c;    state[3] += d;    /* Zeroize sensitive information */    memset((UCHAR *)x, 0, sizeof(x));    }/***************************************************************************** MD5Init - Initialize the MD5 routine.** Begins an MD5 operation by writing a new context.** RETURNS: N/A*/void MD5Init    (    MD5_CTX_T * context    )    {    context->count[0] = context->count[1] = 0;    /* Load magic initialization constants */    context->state[0] = 0x67452301;    context->state[1] = 0xefcdab89;    context->state[2] = 0x98badcfe;    context->state[3] = 0x10325476;    }/***************************************************************************** MD5Update - MD5 block update operation.** Continues an MD5 message-digest operation by processing another* message block and updating the context.** RETURNS: N/A*/void MD5Update    (    MD5_CTX_T * context,    UCHAR *     input,    UINT        inputLen    )    {    UINT i, index, partLen;    /* Compute number of bytes mod 64 */    index = (UINT)((context->count[0] >> 3) & 0x3F);    /* Update number of bits */    if ((context->count[0] += ((ULONG)inputLen << 3)) < ((ULONG)inputLen << 3))        {        context->count[1]++;        }    context->count[1] += ((ULONG)inputLen >> 29);    partLen = 64 - index;    /* Transform as many times as possible */    if (inputLen >= partLen)        {        memcpy((UCHAR *)&context->buffer[index], (UCHAR *)input, partLen);        MD5Transform((ULONG *)context->state, (UCHAR *)context->buffer);        for (i = partLen; (i + 63) < inputLen; i += 64)            {            MD5Transform((ULONG *)context->state, (UCHAR *)&input[i]);            }        index = 0;        }    else        {        i = 0;        }    /* Buffer remaining input */    memcpy((UCHAR *)&context->buffer[index], (UCHAR *)&input[i], inputLen - i);    }/***************************************************************************** MD5Final - MD5 finalization.** Ends an MD5 message-digest operation by writing the message digest* and zeroizing the context.** RETURNS: N/A*/void MD5Final    (    UCHAR       digest[16],    MD5_CTX_T * context    )    {    UCHAR bits[8];    UINT index, padLen;    UINT i, j;    /* Save number of bits */    for (i = 0, j = 0; j < 8; i++, j += 4)        {        bits[j] = (UCHAR)(context->count[i] & 0xff);        bits[j+1] = (UCHAR)((context->count[i] >> 8) & 0xff);        bits[j+2] = (UCHAR)((context->count[i] >> 16) & 0xff);        bits[j+3] = (UCHAR)((context->count[i] >> 24) & 0xff);        }    /* Pad out to 56 mod 64 */    index = (UINT)((context->count[0] >> 3) & 0x3f);    padLen = (index < 56) ? (56 - index) : (120 - index);    MD5Update(context, PADDING, padLen);    /* Append length (before padding) */    MD5Update(context, bits, 8);    /*     * Store the state as the digest.  The digest begins with the     * low-order byte of the first register and ends with the high-order     * byte of the last register.     */    for (i = 0, j = 0; j < 16; i++, j += 4)        {        digest[j] = (UCHAR)(context->state[i] & 0xff);        digest[j+1] = (UCHAR)((context->state[i] >> 8) & 0xff);        digest[j+2] = (UCHAR)((context->state[i] >> 16) & 0xff);        digest[j+3] = (UCHAR)((context->state[i] >> 24) & 0xff);        }    /* Zeroize sensitive information */    memset((UCHAR *)context, 0, sizeof(*context));    }#if MD5_TEST#include <stdio.h>LOCAL void MD5String    (    char * pString,    char * pResult    )    {    MD5_CTX_T context;    UCHAR digest[16];    UCHAR strDigest[32 + 1];    UCHAR * pTemp;    UINT len = strlen(pString);    int i;    MD5Init(&context);    MD5Update(&context, pString, len);    MD5Final(digest, &context);    for (pTemp = strDigest, i = 0; i < 16; i++)        pTemp += sprintf(pTemp, "%02x", digest[i]);    fprintf(stderr, "MD5(\"%s\")\n--> %s", pString, strDigest);    if (strcmp(strDigest, pResult) != 0) fprintf(stderr, " FAILED\n");    else fprintf(stderr, " PASSED\n");    }void MD5Test    (    void    )    {    printf("\n");    MD5String("", "d41d8cd98f00b204e9800998ecf8427e");    MD5String("a", "0cc175b9c0f1b6a831c399e269772661");    MD5String("abc", "900150983cd24fb0d6963f7d28e17f72");    MD5String("message digest", "f96b697d7cb7938d525a2f31aaf161d0");    MD5String("abcdefghijklmnopqrstuvwxyz", "c3fcd3d76192e4007dfb496cca67e13b");    MD5String("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", "d174ab98d277d9f5a5611c2c9f419d9f");    MD5String("12345678901234567890123456789012345678901234567890123456789012345678901234567890", "57edf4a22be3c955ac49da2e2107b67a");    printf("\n");    }#endif /* MD5_TEST */#endif /* RIP_MD5 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久9999| 色妞www精品视频| 亚洲精品乱码久久久久久 | 亚洲日本在线视频观看| 久久综合色8888| 久久久精品欧美丰满| 26uuu国产在线精品一区二区| 日韩一区二区三区免费观看| 欧美一区二区久久久| 制服丝袜成人动漫| 91精品久久久久久蜜臀| 日韩欧美国产电影| 精品久久久久久久久久久久久久久 | 欧美色视频在线| 色婷婷综合久久久久中文| 91免费国产在线| 在线观看区一区二| 欧美高清视频不卡网| 欧美电视剧在线看免费| 国产亚洲精品bt天堂精选| 日韩伦理免费电影| 亚洲午夜精品网| 蜜臀av亚洲一区中文字幕| 国产美女在线观看一区| www.欧美精品一二区| 欧美日韩专区在线| 久久久欧美精品sm网站| 亚洲乱码中文字幕综合| 日韩国产欧美在线观看| 激情久久五月天| 日本电影亚洲天堂一区| 精品久久久久久无| 一区二区三区蜜桃| 久久精品国产亚洲5555| 91丨porny丨最新| 在线成人av网站| 欧美激情中文字幕一区二区| 亚洲成人激情社区| 国产一区美女在线| 精品视频全国免费看| 国产色91在线| 五月激情六月综合| 成人国产精品视频| 日韩欧美国产系列| 亚洲制服丝袜av| 久久se这里有精品| 在线视频综合导航| 日本一区二区三级电影在线观看| 亚洲成在人线在线播放| 99久久婷婷国产| 欧美成人一区二区三区片免费| 亚洲免费观看在线观看| 国产一区999| 日韩欧美中文一区二区| 亚洲一区在线观看网站| yourporn久久国产精品| 久久久亚洲午夜电影| 免费一区二区视频| 在线欧美日韩精品| ...中文天堂在线一区| 国产精品一线二线三线| 日韩美女在线视频| 午夜免费久久看| 91福利区一区二区三区| 亚洲精品网站在线观看| 91色视频在线| 椎名由奈av一区二区三区| 高清成人在线观看| 久久久99精品免费观看不卡| 狠狠色丁香久久婷婷综| 精品国产欧美一区二区| 久久99热国产| 日韩欧美资源站| 久久不见久久见免费视频1| 日韩三级.com| 韩日精品视频一区| 国产亚洲制服色| 国产精品一级在线| 国产精品天干天干在线综合| 国产成人免费高清| 国产精品网站在线观看| av在线这里只有精品| 日韩一区在线看| 一本在线高清不卡dvd| 亚洲免费观看高清完整| 欧美视频一二三区| 视频一区欧美精品| 精品日韩一区二区三区| 国产成人精品影院| 1区2区3区国产精品| 在线视频国产一区| 亚洲va韩国va欧美va| 欧美一区二区三区系列电影| 捆绑调教美女网站视频一区| 久久久综合网站| 99国产精品国产精品久久| 亚洲精品综合在线| 欧美一级黄色大片| 国产999精品久久| 一个色综合网站| 欧美zozozo| 成人avav影音| 午夜激情一区二区三区| 久久久久久久久久美女| 91在线观看下载| 美女一区二区在线观看| 国产精品每日更新| 在线不卡的av| 不卡av免费在线观看| 午夜日韩在线电影| 国产区在线观看成人精品| 99国产精品国产精品毛片| 奇米综合一区二区三区精品视频| 中文字幕高清一区| 欧美一区午夜视频在线观看| 国产白丝精品91爽爽久久| 亚洲高清一区二区三区| 国产欧美精品一区| 51精品秘密在线观看| kk眼镜猥琐国模调教系列一区二区| 亚洲一区二区视频在线观看| 久久九九久久九九| 91精品国产综合久久婷婷香蕉| 成人小视频在线| 热久久久久久久| 亚洲欧美激情视频在线观看一区二区三区 | 国产一区激情在线| 亚洲免费av在线| 国产午夜亚洲精品不卡| 777xxx欧美| 精品视频在线视频| 色综合天天综合色综合av| 韩国av一区二区三区在线观看| 欧美日韩激情一区二区| 日韩国产一区二| 亚洲自拍偷拍av| 亚洲欧洲色图综合| 日韩欧美一级二级三级| 日本精品一区二区三区四区的功能| 欧美日韩美少妇| 一本色道久久综合亚洲精品按摩| 激情欧美一区二区| 三级不卡在线观看| 亚洲欧美另类图片小说| 久久天堂av综合合色蜜桃网| 欧美日韩国产高清一区二区三区| av影院午夜一区| 丰满白嫩尤物一区二区| 男女视频一区二区| 性久久久久久久| 亚洲美女免费在线| 亚洲男人都懂的| 一区二区三区四区乱视频| 中文无字幕一区二区三区| 久久精品一二三| 中文字幕乱码一区二区免费| 国产亚洲精品aa午夜观看| 国产无遮挡一区二区三区毛片日本 | 国产成人av电影| 国产99久久久国产精品潘金| 成人永久看片免费视频天堂| av电影在线观看一区| 色网站国产精品| 6080午夜不卡| 精品黑人一区二区三区久久| 久久九九全国免费| 亚洲图片你懂的| 亚洲国产成人91porn| 日韩av高清在线观看| 国产综合久久久久影院| 国产成人欧美日韩在线电影| 99久久国产综合精品女不卡| 91麻豆国产福利在线观看| 欧美群妇大交群的观看方式| 精品日韩在线一区| 国产精品对白交换视频| 亚洲成人动漫一区| 精品亚洲国产成人av制服丝袜| 国产mv日韩mv欧美| 欧美午夜视频网站| 国产视频一区在线播放| 一区二区三区日韩在线观看| 免费人成在线不卡| 成人永久aaa| 欧美一区二区三区免费| 欧美经典一区二区| 亚洲一区二区三区四区中文字幕| 裸体一区二区三区| 91蝌蚪porny| 日韩欧美国产1| 亚洲女人小视频在线观看| 蜜臀精品一区二区三区在线观看| 国产成人在线视频播放| 欧美亚一区二区| 国产欧美精品一区| 日本成人在线电影网| 色综合久久久久综合99| 精品久久一区二区三区| 亚洲激情校园春色| 国产99久久久国产精品免费看|