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

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

?? md5.c

?? rip路由在vxworks上的實(shí)現(xiàn)源代碼
?? C
字號(hào):
/* 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 */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
石原莉奈一区二区三区在线观看| 久久成人羞羞网站| 日韩精品自拍偷拍| 91婷婷韩国欧美一区二区| 蜜臀久久99精品久久久久久9| 国产精品第13页| 精品国产自在久精品国产| 色婷婷综合在线| 国产精品 欧美精品| 热久久一区二区| 一区二区三区四区不卡视频| 日本一二三不卡| 欧美成人a∨高清免费观看| 欧美无乱码久久久免费午夜一区| 国产成a人亚洲| 久久97超碰国产精品超碰| 天天综合日日夜夜精品| 亚洲人吸女人奶水| 国产欧美日韩麻豆91| 精品日韩在线观看| 欧美一级二级三级蜜桃| 欧美日韩一区久久| 在线看不卡av| 色伊人久久综合中文字幕| 亚洲综合久久av| 欧美性xxxxxxxx| 99久久精品国产观看| 国产一区二区不卡老阿姨| 日本女优在线视频一区二区| 亚洲综合一区二区三区| 亚洲精品中文字幕在线观看| 亚洲色图清纯唯美| 国产精品传媒在线| 国产精品久久久久久妇女6080| 久久久美女毛片| 久久午夜色播影院免费高清| 欧美成人aa大片| 久久在线观看免费| 久久综合资源网| 久久先锋影音av| 久久色中文字幕| 国产午夜亚洲精品不卡| 国产日韩欧美制服另类| 中文在线免费一区三区高中清不卡| 久久这里只有精品首页| 国产夜色精品一区二区av| 久久精品一区二区| 中文字幕国产一区| 综合自拍亚洲综合图不卡区| 亚洲欧美乱综合| 亚洲高清视频中文字幕| 天天色综合成人网| 久久99久久精品欧美| 国内精品久久久久影院色| 国产成人免费视频网站高清观看视频 | 亚洲国产日韩a在线播放| 亚洲444eee在线观看| 奇米在线7777在线精品| 久久av资源站| 成人免费精品视频| 91久久精品一区二区三| 欧美丰满一区二区免费视频| 日韩欧美国产电影| 国产亚洲美州欧州综合国| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 三级成人在线视频| 久久精品国产秦先生| 懂色av一区二区三区蜜臀| 99在线精品视频| 欧美日韩精品三区| 精品乱人伦一区二区三区| 中文欧美字幕免费| 亚洲一区二区3| 黄色日韩网站视频| 色综合网站在线| 欧美一区二区三区在线电影| 国产亚洲人成网站| 一二三区精品视频| 黄一区二区三区| 色婷婷综合久久久久中文| 日韩欧美国产一区在线观看| 中文字幕av一区二区三区免费看| 亚洲国产精品一区二区www| 久久99国产精品久久| 91视频免费播放| 欧美精品一区男女天堂| 亚洲免费av网站| 麻豆国产91在线播放| 99精品国产热久久91蜜凸| 91.麻豆视频| 国产精品自拍毛片| 欧美吻胸吃奶大尺度电影| 久久伊人蜜桃av一区二区| 一区二区三区高清不卡| 国产激情偷乱视频一区二区三区| 欧美日韩一区精品| 国产精品久久久久久久久免费桃花 | 欧美日韩精品三区| 国产精品久久久久影视| 久久爱另类一区二区小说| 在线免费观看视频一区| 国产喷白浆一区二区三区| 天天色天天操综合| 色哟哟日韩精品| 中文字幕av一区二区三区高| 久久99最新地址| 欧美日韩黄视频| 亚洲伦理在线免费看| 国产福利一区二区三区| 日韩一区二区三区免费看| 亚洲午夜久久久久久久久电影院| 福利一区在线观看| 精品99999| 美日韩黄色大片| 欧美日韩精品电影| 亚洲国产视频一区| 色综合久久99| 国产精品久久久爽爽爽麻豆色哟哟| 激情亚洲综合在线| 日韩一区国产二区欧美三区| 亚洲午夜三级在线| 欧美在线一二三| 亚洲乱码日产精品bd| 91丝袜高跟美女视频| 国产精品精品国产色婷婷| 国产成人精品在线看| 久久影院午夜片一区| 国产精品自拍在线| 国产清纯美女被跳蛋高潮一区二区久久w | 久久成人免费网| 欧美电影免费观看高清完整版在 | 国产日韩欧美电影| 国产剧情一区二区三区| 精品久久久网站| 久久国产尿小便嘘嘘尿| 日韩欧美电影一二三| 久久99精品一区二区三区| 精品国产一区二区三区av性色 | 久久综合九色欧美综合狠狠| 久久99国内精品| 久久久亚洲午夜电影| 国产精品一区二区你懂的| 国产区在线观看成人精品| 不卡一二三区首页| 18成人在线视频| 欧洲国内综合视频| 亚洲成人午夜电影| 欧美一卡2卡三卡4卡5免费| 蜜臂av日日欢夜夜爽一区| 精品电影一区二区三区| 国产成人精品免费在线| 最近中文字幕一区二区三区| 日本久久电影网| 婷婷丁香久久五月婷婷| 欧美哺乳videos| 国产大片一区二区| 亚洲特级片在线| 欧美日韩免费高清一区色橹橹 | 国产成人免费高清| 日韩一区欧美一区| 欧美在线999| 麻豆国产精品777777在线| 国产视频一区在线观看| 91免费在线看| 日韩专区一卡二卡| 国产天堂亚洲国产碰碰| 91成人在线免费观看| 喷白浆一区二区| 国产精品毛片a∨一区二区三区| 日本韩国欧美一区二区三区| 日本不卡高清视频| 国产女人18毛片水真多成人如厕| 91国产成人在线| 久久97超碰国产精品超碰| 国产精品不卡在线观看| 欧美丰满嫩嫩电影| 国产a精品视频| 亚洲va欧美va人人爽| 久久久久99精品一区| 欧美亚洲一区二区在线| 国内精品在线播放| 一区二区三区国产精华| 久久久国产精品午夜一区ai换脸| 色哟哟一区二区在线观看| 黄色精品一二区| 一级做a爱片久久| 国产日本欧美一区二区| 欧美人妖巨大在线| 成人国产亚洲欧美成人综合网| 日韩精品亚洲专区| 中文字幕一区二区三区精华液| 69堂成人精品免费视频| 91免费国产视频网站| 精品制服美女丁香| 亚洲综合成人在线| 国产精品三级av| 欧美成人艳星乳罩| 欧美日韩免费高清一区色橹橹| 成人黄色在线看| 国产在线精品一区二区 |