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

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

?? sha1.c

?? 一個開源的sip源代碼
?? C
字號:
/* $Id: sha1.c 1001 2007-02-25 15:38:32Z bennylp $ *//* * Modified 2/07 * By Benny Prijono <benny@prijono.org> * Still 100% Public Domain * * This is the implementation of SHA-1 encryption algorithm based on * Steve Reid work. Modified to work with PJLIB. *//*SHA-1 in CBy Steve Reid <sreid@sea-to-sky.net>100% Public Domain-----------------Modified 7/98 By James H. Brown <jbrown@burgoyne.com>Still 100% Public DomainCorrected a problem which generated improper hash values on 16 bit machinesRoutine SHA1Update changed from	void SHA1Update(SHA1_CTX* context, unsigned char* data, unsigned intlen)to	void SHA1Update(SHA1_CTX* context, unsigned char* data, unsignedlong len)The 'len' parameter was declared an int which works fine on 32 bit machines.However, on 16 bit machines an int is too small for the shifts being doneagainstit.  This caused the hash function to generate incorrect values if len wasgreater than 8191 (8K - 1) due to the 'len << 3' on line 3 of SHA1Update().Since the file IO in main() reads 16K at a time, any file 8K or larger wouldbe guaranteed to generate the wrong hash (e.g. Test Vector #3, a million"a"s).I also changed the declaration of variables i & j in SHA1Update to unsigned long from unsigned int for the same reason.These changes should make no difference to any 32 bit implementations sinceanint and a long are the same size in those environments.--I also corrected a few compiler warnings generated by Borland C.1. Added #include <process.h> for exit() prototype2. Removed unused variable 'j' in SHA1Final3. Changed exit(0) to return(0) at end of main.ALL changes I made can be located by searching for comments containing 'JHB'-----------------Modified 8/98By Steve Reid <sreid@sea-to-sky.net>Still 100% public domain1- Removed #include <process.h> and used return() instead of exit()2- Fixed overwriting of finalcount in SHA1Final() (discovered by Chris Hall)3- Changed email address from steve@edmweb.com to sreid@sea-to-sky.net-----------------Modified 4/01By Saul Kravitz <Saul.Kravitz@celera.com>Still 100% PDModified to run on Compaq Alpha hardware.  -----------------Modified 07/2002By Ralph Giles <giles@ghostscript.com>Still 100% public domainmodified for use with stdint types, autoconfcode cleanup, removed attribution commentsswitched SHA1Final() argument order for consistencyuse SHA1_ prefix for public apimove public api to sha1.h*//*Test Vectors (from FIPS PUB 180-1)"abc"  A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"  84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1A million repetitions of "a"  34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F*//* #define SHA1HANDSOFF  *//* blp:#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <stdio.h>#include <string.h>#include "os_types.h"#include "sha1.h"*/#include <pjlib-util/sha1.h>#include <pj/string.h>#undef SHA1HANDSOFFstatic void SHA1_Transform(pj_uint32_t state[5], const pj_uint8_t buffer[64]);#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))/* blk0() and blk() perform the initial expand. *//* I got the idea of expanding during the round function from SSLeay *//* FIXME: can we do this in an endian-proof way? *//* #ifdef WORDS_BIGENDIAN */#if defined(PJ_IS_BIG_ENDIAN) && PJ_IS_BIG_ENDIAN != 0#define blk0(i) block->l[i]#else#define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \    |(rol(block->l[i],8)&0x00FF00FF))#endif#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \    ^block->l[(i+2)&15]^block->l[i&15],1))/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);/* Hash a single 512-bit block. This is the core of the algorithm. */static void SHA1_Transform(pj_uint32_t state[5], const pj_uint8_t buffer[64]){    pj_uint32_t a, b, c, d, e;    typedef union {        pj_uint8_t c[64];        pj_uint32_t l[16];    } CHAR64LONG16;    CHAR64LONG16* block;#ifdef SHA1HANDSOFF    static pj_uint8_t workspace[64];    block = (CHAR64LONG16*)workspace;    pj_memcpy(block, buffer, 64);#else    block = (CHAR64LONG16*)buffer;#endif    /* Copy context->state[] to working vars */    a = state[0];    b = state[1];    c = state[2];    d = state[3];    e = state[4];    /* 4 rounds of 20 operations each. Loop unrolled. */    R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);    R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);    R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);    R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15);    R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19);    R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23);    R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27);    R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31);    R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35);    R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39);    R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43);    R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47);    R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51);    R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55);    R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59);    R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63);    R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67);    R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);    R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);    R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);    /* Add the working vars back into context.state[] */    state[0] += a;    state[1] += b;    state[2] += c;    state[3] += d;    state[4] += e;    /* Wipe variables */    a = b = c = d = e = 0;}/* SHA1Init - Initialize new context */PJ_DEF(void) pj_sha1_init(pj_sha1_context* context){    /* SHA1 initialization constants */    context->state[0] = 0x67452301;    context->state[1] = 0xEFCDAB89;    context->state[2] = 0x98BADCFE;    context->state[3] = 0x10325476;    context->state[4] = 0xC3D2E1F0;    context->count[0] = context->count[1] = 0;}/* Run your data through this. */PJ_DEF(void) pj_sha1_update(pj_sha1_context* context, 			    const pj_uint8_t* data, const pj_size_t len){    pj_size_t i, j;    j = (context->count[0] >> 3) & 63;    if ((context->count[0] += len << 3) < (len << 3)) context->count[1]++;    context->count[1] += (len >> 29);    if ((j + len) > 63) {        pj_memcpy(&context->buffer[j], data, (i = 64-j));        SHA1_Transform(context->state, context->buffer);        for ( ; i + 63 < len; i += 64) {            SHA1_Transform(context->state, data + i);        }        j = 0;    }    else i = 0;    pj_memcpy(&context->buffer[j], &data[i], len - i);}/* Add padding and return the message digest. */PJ_DEF(void) pj_sha1_final(pj_sha1_context* context, 			   pj_uint8_t digest[PJ_SHA1_DIGEST_SIZE]){    pj_uint32_t i;    pj_uint8_t  finalcount[8];    for (i = 0; i < 8; i++) {        finalcount[i] = (unsigned char)((context->count[(i >= 4 ? 0 : 1)]         >> ((3-(i & 3)) * 8) ) & 255);  /* Endian independent */    }    pj_sha1_update(context, (pj_uint8_t *)"\200", 1);    while ((context->count[0] & 504) != 448) {        pj_sha1_update(context, (pj_uint8_t *)"\0", 1);    }    pj_sha1_update(context, finalcount, 8);  /* Should cause a SHA1_Transform() */    for (i = 0; i < PJ_SHA1_DIGEST_SIZE; i++) {        digest[i] = (pj_uint8_t)         ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);    }        /* Wipe variables */    i = 0;    pj_memset(context->buffer, 0, 64);    pj_memset(context->state, 0, 20);    pj_memset(context->count, 0, 8);    pj_memset(finalcount, 0, 8);	/* SWR */#ifdef SHA1HANDSOFF  /* make SHA1Transform overwrite its own static vars */    SHA1_Transform(context->state, context->buffer);#endif}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品欧美综合在线观看最新| 国产免费久久精品| 久久网站热最新地址| 亚洲另类在线一区| 国产麻豆视频一区| 91精品国产色综合久久ai换脸| 国产精品久久久久久久久久久免费看 | 一区二区三区蜜桃网| 久草精品在线观看| 欧美日韩国产高清一区二区 | 国产免费成人在线视频| 天天影视网天天综合色在线播放| 国产成人高清在线| 欧美一级夜夜爽| 午夜精品久久久久久久蜜桃app| 成人av在线一区二区三区| 久久综合给合久久狠狠狠97色69| 日韩精品电影一区亚洲| 欧美制服丝袜第一页| 亚洲男人天堂一区| 99在线精品视频| 国产精品丝袜黑色高跟| 国产精品中文字幕日韩精品| 日韩欧美在线网站| 日本欧美韩国一区三区| 69p69国产精品| 亚洲第一精品在线| 日韩三级在线免费观看| 亚洲国产一区二区三区青草影视| www.亚洲免费av| 日本一区二区三区在线观看| 极品瑜伽女神91| 国产欧美日韩三级| 国产精品正在播放| 久久久久久夜精品精品免费| 久久精品国产在热久久| 日韩久久精品一区| 久久se精品一区精品二区| 精品国产免费一区二区三区四区| 蜜臀av性久久久久蜜臀av麻豆| 欧美一区二区成人| 久久国产日韩欧美精品| 2欧美一区二区三区在线观看视频| 蜜桃av一区二区三区| 精品久久国产字幕高潮| 国产精品18久久久久久久久| 国产精品丝袜一区| 色噜噜狠狠一区二区三区果冻| 一区二区三区高清不卡| 欧美日韩精品一区二区天天拍小说| 五月激情综合婷婷| 日韩三级av在线播放| 国产福利91精品一区| 中文在线一区二区| 91国产精品成人| 蜜桃久久精品一区二区| 欧美va日韩va| 成人aaaa免费全部观看| 亚洲成人在线观看视频| 精品国产乱码久久久久久久 | 91福利国产精品| 五月婷婷激情综合| 久久男人中文字幕资源站| 99久久精品国产一区二区三区| 丝袜诱惑亚洲看片| 国产视频一区不卡| 欧美日韩一本到| 懂色一区二区三区免费观看| 亚洲国产日韩精品| 国产午夜精品一区二区三区嫩草 | 日本高清不卡在线观看| 蜜桃视频在线观看一区| 国产精品久久久久久久久果冻传媒| 欧美在线你懂的| 国产精品系列在线观看| 五月天亚洲精品| 国产精品卡一卡二卡三| 欧美va天堂va视频va在线| 色中色一区二区| 国产精品18久久久久久久久| 丝袜亚洲另类欧美| 国产精品福利一区| 精品国产乱码久久久久久浪潮| 欧美自拍偷拍一区| 从欧美一区二区三区| 免费在线看成人av| 亚洲亚洲精品在线观看| 18成人在线视频| 精品国产乱码久久久久久夜甘婷婷 | av网站免费线看精品| 蜜桃精品视频在线| 天使萌一区二区三区免费观看| 亚洲欧美日韩系列| 国产女同性恋一区二区| 精品国产免费一区二区三区香蕉| 欧美色图12p| 色噜噜偷拍精品综合在线| 成人美女在线观看| 国产精品自拍网站| 狠狠色丁香婷婷综合| 日韩高清一区二区| 偷窥国产亚洲免费视频| 一级特黄大欧美久久久| 国产精品久久久久桃色tv| 久久九九国产精品| 久久久亚洲午夜电影| 日韩欧美高清一区| 日韩一二三区视频| 日韩一区二区电影在线| 91精品国产欧美日韩| 欧美疯狂做受xxxx富婆| 欧美日韩一区二区在线观看| 欧美日韩一区在线观看| 欧美日韩国产首页| 欧美午夜精品理论片a级按摩| 99精品视频中文字幕| 91在线视频网址| 色狠狠色狠狠综合| 欧洲av在线精品| 欧美二区三区的天堂| 91精品一区二区三区久久久久久 | 国产高清久久久久| 国产精品996| 成人avav影音| 日本道精品一区二区三区| 欧美亚一区二区| 制服丝袜中文字幕亚洲| 欧美va亚洲va香蕉在线| 欧美激情中文字幕| 亚洲男同1069视频| 日韩专区在线视频| 韩国毛片一区二区三区| 成人av免费在线观看| 在线观看一区二区视频| 欧美一区二区福利在线| 国产日本欧美一区二区| 一区二区视频免费在线观看| 视频精品一区二区| 国产九九视频一区二区三区| 波多野结衣91| 欧美视频一区二区| 亚洲精品一线二线三线| 自拍偷拍国产亚洲| 蜜桃av一区二区在线观看| 成人深夜在线观看| 亚洲激情自拍偷拍| 欧美日本精品一区二区三区| 在线播放91灌醉迷j高跟美女| 精品欧美久久久| 国产精品女同一区二区三区| 一区二区三区欧美在线观看| 美女在线视频一区| 91麻豆产精品久久久久久| 欧美老肥妇做.爰bbww| 久久久久久夜精品精品免费| 亚洲精品欧美在线| 国产一区二区在线视频| 欧美在线观看一区| 久久久久久久网| 亚洲一区二区欧美| 国产v日产∨综合v精品视频| 欧美午夜片在线看| 日本一区二区三区高清不卡| 亚洲成人免费在线观看| 国产v综合v亚洲欧| 欧美电视剧在线观看完整版| 99久久精品国产毛片| 91久久线看在观草草青青| 91精品国产一区二区三区蜜臀| 国产精品视频看| 日韩电影一区二区三区四区| 91丨porny丨最新| 国产午夜亚洲精品不卡| 美女精品一区二区| 精品视频一区二区不卡| 成人欧美一区二区三区1314| 国产尤物一区二区在线| 欧美一区二区网站| 亚洲国产日韩在线一区模特| 成人av午夜电影| 国产日韩欧美制服另类| 麻豆极品一区二区三区| 欧美日韩第一区日日骚| 亚洲欧美视频一区| 99久久久无码国产精品| 337p粉嫩大胆色噜噜噜噜亚洲| 日韩高清不卡一区二区三区| 91国内精品野花午夜精品| 日韩理论片在线| 成人福利视频在线| 欧美激情在线看| 国产精品18久久久久久久久 | 国产白丝精品91爽爽久久 | 国产一区二区三区av电影| 欧美精品高清视频| 亚洲大片在线观看| 欧美体内she精视频| 亚洲福利视频导航| 欧美日本韩国一区| 日本中文一区二区三区|