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

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

?? qfdes.c

?? 完整的RTP RTSP代碼庫
?? C
?? 第 1 頁 / 共 2 頁
字號:
0x08020020, 0x08000000, 0x00020000, 0x08000820,0x00000000, 0x08020820, 0x00020020, 0x08000020,0x08020000, 0x08000800, 0x08000820, 0x00000000,0x08020820, 0x00020800, 0x00020800, 0x00000820,0x00000820, 0x00020020, 0x08000000, 0x08020800};#define INITIAL_PERMUTATION(t, regL, regR) \        INITIAL_PERMUTATION_AUX(t[0], t[1], regL, regR)#define FINAL_PERMUTATION(regR, regL, t) \        FINAL_PERMUTATION_AUX(regR, regL, t[0], t[1])#define PC1(k, regC, regD) \        PC1_AUX(k[0], k[1], regC, regD)#define PC2(regC, regD, k) \        PC2_AUX(regC, regD, k[0], k[1])unsigned char G_padChar = (char) 0; /* Default pad charcater */static Word ROTATE_LEFT(Word x) {	Word	a;	a = (x & 0x80000000) >> 27;	return (x << 1) | a;}static Word ROTATE_RIGHT(Word x) {	Word	a;	a = x & 0x00000010;	return (x >> 1) | (a << 27);}/*** The S Box transformations and the permutation P are combined in the vectors** s_p0 - s_p7. Permutation E and the MOD 2 addition with the intermediate key** are then done "inline" on each round. The intermediate key is already in a** a 8x6bit form because of the modified permuation PC2 used.*/#if !defined(WORDS_BIGENDIAN)#define DES(t, ik) \{ \    register Word l, r, reg32, round; \    register unsigned char *bb; \    INITIAL_PERMUTATION(t, l, r); \    for(bb = (unsigned char *) ik, round = 0x8000; round; bb += 8, round >>= 1) { \        register Word w = (r << 1) | (r >> 31); \        reg32  = s_p7[( w        & 0x3f) ^ bb[4]]; \        reg32 |= s_p6[((w >>= 4) & 0x3f) ^ bb[5]]; \        reg32 |= s_p5[((w >>= 4) & 0x3f) ^ bb[6]]; \        reg32 |= s_p4[((w >>= 4) & 0x3f) ^ bb[7]]; \        reg32 |= s_p3[((w >>= 4) & 0x3f) ^ bb[0]]; \        reg32 |= s_p2[((w >>= 4) & 0x3f) ^ bb[1]]; \        reg32 |= s_p1[((w >>  4) & 0x3f) ^ bb[2]]; \        reg32 |= s_p0[(((r & 0x1) << 5) | ((r & 0xf8000000) >> 27)) ^ bb[3]]; \        reg32 ^= l; \        l = r; \        r = reg32; \    } \    FINAL_PERMUTATION(r, l, t); \}#define MAKE_LITTLE_ENDIAN(t, s) \{ \    register unsigned int z, l = s/4; \    register Word *tp = (Word *) t; \    for(z = 0; z < l; ++z) tp[z] = htonl(tp[z]); \}#else /* WORDS_BIGENDIAN */#define DES(t, ik) \{ \    register Word l, r, reg32, round; \    register unsigned char *bb; \    INITIAL_PERMUTATION(t, l, r); \    for(bb = (unsigned char *) ik, round = 0x8000; round; bb += 8, round >>= 1) { \        register Word w = (r << 1) | (r >> 31); \        reg32  = s_p7[( w        & 0x3f) ^ bb[7]]; \        reg32 |= s_p6[((w >>= 4) & 0x3f) ^ bb[6]]; \        reg32 |= s_p5[((w >>= 4) & 0x3f) ^ bb[5]]; \        reg32 |= s_p4[((w >>= 4) & 0x3f) ^ bb[4]]; \        reg32 |= s_p3[((w >>= 4) & 0x3f) ^ bb[3]]; \        reg32 |= s_p2[((w >>= 4) & 0x3f) ^ bb[2]]; \        reg32 |= s_p1[((w >>  4) & 0x3f) ^ bb[1]]; \        reg32 |= s_p0[(((r & 0x1) << 5) | ((r & 0xf8000000) >> 27)) ^ bb[0]]; \        reg32 ^= l; \        l = r; \        r = reg32; \    } \    FINAL_PERMUTATION(r, l, t); \}#endif /* WORDS_BIGENDIAN */intqfDES(unsigned char	*key,      unsigned char	*data,      unsigned int 	 size,const QFDES_what   	 what,const QFDES_mode   	 mode,      unsigned char	*initVec){    /* Store some info to optimise for multiple calls ... */    static unsigned char desKey[8], desKeys[128];    static Word 	*oldKey = (Word *) desKey,         		*keys   = (Word *) desKeys;    static QFDES_what 	oldWhat;    static QFDES_mode 	oldMode;    unsigned char 	b0[8], b1[8]; /* feedback blocks */    Word 		*newKey = (Word *) key, /* key from user */         		*text,                  /* text to be [en|de]crypted */         		*cb     = (Word *) b0,  /* the chained block in CBC mode */         		*cb1    = (Word *) b1;  /* a copy for use when decrypting */#if !defined(WORDS_BIGENDIAN)    unsigned int origSize = size;    MAKE_LITTLE_ENDIAN(key, 8);    MAKE_LITTLE_ENDIAN(data, origSize);#endif    /*    ** Check new key against old key    ** and set up intermediate keys.    */    if (newKey[0] != oldKey[0] || newKey[1] != oldKey[1]) {        Word c, d;  /* C and D registers */        oldKey[0] = newKey[0]; oldKey[1] = newKey[1];        oldWhat   = what;        oldMode   = mode;        PC1(newKey, c, d);        if ((what == qfDES_encrypt) || (mode == qfDES_cfb) || (mode == qfDES_ofb)) {		int 	 z;		Word	 r; 		Word	*k = keys; 		Word 	 rol[16] = {1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1};		for(z = 0; z < 16; z++, k += 2) { 			for (r = 0; r < rol[z]; r++) {				c = ROTATE_LEFT(c); 				d = ROTATE_LEFT(d);			}			PC2(c, d, k); 		}        } else {		int 	 z;		Word	 r; 		Word	*k = keys; 		Word 	 ror[16] = {0, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1};		for(z = 0; z < 16; z++, k += 2) { 			r = 0;			while (ror[z] > r) {				r++;				c = ROTATE_RIGHT(c); 				d = ROTATE_RIGHT(d);			}			PC2(c, d, k); 		} 	}    } else if ((what != oldWhat) && ((mode == qfDES_ecb) || (mode == qfDES_cbc))) {        /*        ** Same key but different direction.        ** Reverse intermediate key sequence (ECB and CBC).        */        Word *ik1, *ik2, ik3[2];        for(ik1 = keys, ik2 = &(keys[30]); ik1 < ik2; ik1 += 2, ik2 -= 2) {            ik3[0] = ik1[0]; ik3[1] = ik1[1];            ik1[0] = ik2[0]; ik1[1] = ik2[1];            ik2[0] = ik3[0]; ik2[1] = ik3[1];        }        oldWhat = what;    }    /* Set up initilaisation vector */    if (mode != qfDES_ecb) {        if (initVec) {            { cb[0] = ((Word *) initVec)[0]; cb[1] = ((Word *) initVec)[1]; }        } else {            cb[0] = 0;	    cb[1] = 0;	}#if !defined(WORDS_BIGENDIAN)        MAKE_LITTLE_ENDIAN(cb, 8);#endif    }    /*    ** Lots of gotos and code duplication follow (arrgh) but it speeds    ** it up a wee bit!    ** What would be more useful is looking more carefully at the DES    ** permutations to produce more efficient versions of the macros    ** of the "auto-generated" versions used in qfDES-aux.c.    */    size >>= 3; /* this is always a multpile of 8 */    if (what == qfDES_encrypt) {        switch ((int) mode) {        case ((int) qfDES_ecb): goto _ECB_;        case ((int) qfDES_cbc): goto _CBC_encrypt_;        case ((int) qfDES_cfb): goto _CFB_encrypt_;        case ((int) qfDES_ofb): goto _OFB_;        }    }    else {        switch ((int) mode) {        case ((int) qfDES_ecb): goto _ECB_;        case ((int) qfDES_cbc): goto _CBC_decrypt_;        case ((int) qfDES_cfb): goto _CFB_decrypt_;        case ((int) qfDES_ofb): goto _OFB_;        }    }_ECB_:    /* ECB */    for(text = (Word *) data; size; --size, text += 2)        { DES(text, keys); }    goto _exit_qfDES_;_CBC_encrypt_:    /* CBC Encryption */    for(text = (Word *) data; size; --size, text += 2) {        /* chaining block */        text[0] ^= cb[0]; text[1] ^= cb[1];        DES(text, keys);        /* set up chaining block for next round */        cb[0] = text[0]; cb[1] = text[1];    }    goto _initVec_;_CBC_decrypt_:    /* CBC Decryption */    for(text = (Word *) data; size; --size, text += 2) {        /* set up chaining block */        /*        ** The decryption is done in place so I need        ** to copy this text block for the next round.        */        cb1[0] = text[0]; cb1[1] = text[1];        DES(text, keys);        /* chaining block for next round */        text[0] ^= cb[0]; text[1] ^= cb[1];        /*        ** Copy back the saved encrypted text - this makes        ** CBC decryption slower than CBC encryption.        */        cb[0] = cb1[0]; cb[1] = cb1[1];    }    goto _initVec_;_CFB_encrypt_:    /* CFB Encryption */    for(text = (Word *) data; size; --size, text += 2) {        /* use cb as the feedback block */        DES(cb, keys);        text[0] ^= cb[0]; text[1] ^= cb[1];        /* set up feedback block for next round */        cb[0] = text[0]; cb[1] = text[1];    }    goto _initVec_;_CFB_decrypt_:    /* CFB Decryption */    for(text = (Word *) data; size; --size, text += 2) {        /* set up feedback block */        /*        ** The decryption is done in place so I need        ** to copy this text block for the next round.        */        cb1[0] = text[0]; cb1[1] = text[1];        /* use cb as the feedback block */        DES(cb, keys);        text[0] ^= cb[0]; text[1] ^= cb[1];        /* set up feedback block for next round */        cb[0] = cb1[0]; cb[1] = cb1[1];    }    goto _initVec_;_OFB_:    /* OFB */    for(text = (Word *) data; size; --size, text += 2) {        /* use cb as the feed back block */        DES(cb, keys);        text[0] ^= cb[0]; text[1] ^= cb[1];    }_initVec_:    /*    ** Copy the final chained block back to initVec (CBC, CFB and OFB).    ** This allows the [en|de]cryption of large amounts of data in small    ** chunks.    */    if (initVec) {        ((Word *) initVec)[0] = cb[0];        ((Word *) initVec)[1] = cb[1];#if !defined(WORDS_BIGENDIAN)        MAKE_LITTLE_ENDIAN(initVec, 8);#endif    }_exit_qfDES_:#if !defined(WORDS_BIGENDIAN)    MAKE_LITTLE_ENDIAN(key, 8);    MAKE_LITTLE_ENDIAN(data, origSize);#endif    return 0;}/*** This function sets bit 8 of each byte to odd or even parity as requested.** It is assumed that the right-most bit of each byte is the parity bit.** Although this is really only used by the two key generation functions below,** it may be useful to someone.*/void qfDES_setParity(unsigned char *ptr, unsigned int size, const QFDES_parity parity){    unsigned int i, mask, bits;    for(i = 0; i < size; ++i, ++ptr) {        for(mask = 0x80, bits = 0; mask > 0x01; mask >>= 1)            if (((unsigned int) *ptr) & mask) ++bits;        *ptr |= bits % 2 == (unsigned int) parity ? 0x00 : 0x01;    }}unsigned int qfDES_checkParity(unsigned char *ptr, unsigned int size, const QFDES_parity parity){    unsigned int i, mask, bits, parityBit, parityErrors = 0;    for(i = 0; i < size; ++i, ++ptr) {        for(mask = 0x80, bits = 0; mask > 0x01; mask >>= 1)            if (((unsigned int) *ptr) & mask) ++bits;        parityBit = bits % 2 == (unsigned int) parity ? 0 : 1;        if ((((unsigned int) *ptr) & 0x1) != parityBit)            ++parityErrors;    }    return parityErrors;}staticunsigned char weakKeys[18][8] ={{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, {0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe}, {0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e}, {0xe0, 0xe0, 0xe0, 0xe0, 0xf1, 0xf1, 0xf1, 0xf1}, {0x01, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0xfe}, {0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01}, {0x1f, 0xe0, 0x1f, 0xe0, 0x0e, 0xf1, 0x0e, 0xf1}, {0xe0, 0x1f, 0xe0, 0x1f, 0xf1, 0x0e, 0xf1, 0x0e}, {0x01, 0xe0, 0x01, 0xe0, 0x01, 0xf1, 0x01, 0xf1}, {0xe0, 0x01, 0xe0, 0x01, 0xf1, 0x01, 0xf1, 0x01}, {0x1f, 0xfe, 0x1f, 0xfe, 0x0e, 0xfe, 0x0e, 0xfe}, {0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x0e, 0xfe, 0x0e}, {0x01, 0x1f, 0x01, 0x1f, 0x01, 0x0e, 0x01, 0x0e}, {0x1f, 0x01, 0x1f, 0x01, 0x0e, 0x01, 0x0e, 0x01}, {0xe0, 0xfe, 0xe0, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe}, {0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xf1, 0xfe, 0xf1}};/*** Although this is really only used by the key generation function below,** it may be handy to someone.*/int qfDES_checkWeakKeys(unsigned char *key){    unsigned char *bp;    int i;    for(bp = weakKeys[i = 0]; i < 18; bp = weakKeys[++i])        if (memcmp((void *) key, (void *) bp, 8) == 0) return -1;    return 0;}/*** The following function attempts to genreate a random key or IV.** It relies on the randomness of the  of the random(3) function. Although** it is probably not particularly fast, keys and IV will most probably be** generated off-line so it does not matter too much.*/unsigned char *qfDES_generate(const QFDES_generate what){    static    unsigned char buffer[8];    static    int flag = 0;    unsigned char *bp;    long mask = what == qfDES_key ? 0xfe : 0xff;    /* Set up a seed - 42 is the answer ... */    if (!flag) {        lbl_srandom((int) (getpid() * 42) ^ (int) time((time_t *) 0));        flag = 1;    }    do {        for(bp = buffer; bp <= &(buffer[7]); *bp++ = (unsigned char) (lbl_random() & mask));        if (what ==  qfDES_key)            qfDES_setParity(buffer, 8, qfDES_odd);    } while(what == qfDES_key ? qfDES_checkWeakKeys(buffer) : 0);    return buffer;}unsigned charqfDES_setPad(unsigned char pad){     unsigned char b = G_padChar; G_padChar = pad; return b; }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久这里只有精品6| 777奇米四色成人影色区| 国产精品视频第一区| 国产成人一级电影| 国产精品的网站| 91久久精品一区二区| 天天影视涩香欲综合网 | 91在线国产福利| 亚洲欧美日韩精品久久久久| 欧美在线一二三四区| 日产国产高清一区二区三区| 日韩精品一区二区三区蜜臀 | 亚洲一区二区视频在线| 国产精品国产a级| 91国内精品野花午夜精品| 亚洲高清视频中文字幕| 日韩片之四级片| 国产精品一区二区在线观看网站| 国产精品电影一区二区| 欧美日韩国产一区| 国产精品白丝jk白祙喷水网站| 亚洲欧洲日韩女同| 717成人午夜免费福利电影| 国产一区91精品张津瑜| 亚洲激情av在线| 日韩亚洲欧美成人一区| 波多野结衣的一区二区三区| 丝袜诱惑制服诱惑色一区在线观看 | av高清久久久| 日韩在线一区二区| 亚洲视频在线一区观看| 91精品国产一区二区三区蜜臀| 国产成人免费视频一区| 香蕉乱码成人久久天堂爱免费| 久久新电视剧免费观看| 91国在线观看| 国产成人日日夜夜| 日本亚洲免费观看| 亚洲免费观看在线视频| 久久久久久久久久久久久久久99| 欧美日韩在线不卡| 成人午夜激情影院| 久久成人18免费观看| 一区二区三区四区国产精品| 久久久一区二区| 欧美区在线观看| 91视频国产资源| 狠狠色丁香婷婷综合久久片| 亚洲bt欧美bt精品| 亚洲男女一区二区三区| 国产精品色婷婷| 久久久99精品久久| 日韩欧美在线综合网| 欧美日韩在线直播| 91麻豆国产精品久久| 成人黄色av网站在线| 国产乱人伦精品一区二区在线观看| 天天爽夜夜爽夜夜爽精品视频| 国产精品超碰97尤物18| 国产日韩欧美制服另类| 欧美大片在线观看一区| 欧美一区二区三区视频免费| 欧美日韩中字一区| 在线观看网站黄不卡| 色偷偷88欧美精品久久久| aa级大片欧美| 不卡的看片网站| jlzzjlzz欧美大全| 成人福利在线看| 成人午夜在线免费| eeuss鲁片一区二区三区在线观看| 国产精品888| 国产成人精品三级| 国产91高潮流白浆在线麻豆 | 久久久久久日产精品| 欧美成人vps| 精品国产免费人成在线观看| 午夜在线电影亚洲一区| 亚洲aⅴ怡春院| 日本不卡中文字幕| 久久国产精品99久久人人澡| 精品一二线国产| 国模一区二区三区白浆| 粉嫩欧美一区二区三区高清影视 | 亚洲制服丝袜av| 亚洲午夜精品17c| 日韩黄色在线观看| 久久99精品国产.久久久久| 国产一区二区免费看| 国产99久久久久久免费看农村| 懂色av一区二区三区免费观看 | 欧美日韩黄色影视| 欧美高清激情brazzers| 精品乱码亚洲一区二区不卡| 国产日本欧洲亚洲| 亚洲天天做日日做天天谢日日欢| 亚洲女同一区二区| 亚洲第一主播视频| 精久久久久久久久久久| 99久久精品一区| 欧美日韩大陆一区二区| 久久丝袜美腿综合| 国产精品伦一区| 亚洲综合偷拍欧美一区色| 美国十次了思思久久精品导航| 国产又黄又大久久| 99热精品国产| 欧美一区二区在线播放| 国产精品免费网站在线观看| 亚洲第一av色| 国产盗摄女厕一区二区三区| 欧美熟乱第一页| 精品理论电影在线观看| 亚洲欧美视频一区| 日本vs亚洲vs韩国一区三区二区| 粉嫩一区二区三区性色av| 欧美色图12p| 欧美国产一区二区| 五月激情综合色| 成人av先锋影音| 精品少妇一区二区三区在线播放| 亚洲欧洲色图综合| 久久成人久久鬼色| 欧美午夜宅男影院| 久久九九99视频| 日本aⅴ亚洲精品中文乱码| 91在线观看下载| www亚洲一区| 午夜精品影院在线观看| 91在线视频在线| 26uuuu精品一区二区| 亚洲国产日韩综合久久精品| 国产a级毛片一区| 日韩精品一区二区三区在线观看| 中文字幕一区二区5566日韩| 精彩视频一区二区| 欧美精品少妇一区二区三区 | 性感美女极品91精品| 丁香五精品蜜臀久久久久99网站 | 亚洲欧洲av色图| 久久97超碰国产精品超碰| 一区二区三区四区乱视频| 国产电影一区二区三区| 91精品国产综合久久精品性色 | 国产精品人成在线观看免费 | 日韩三级av在线播放| 亚洲在线视频一区| 91丨porny丨户外露出| 国产精品色噜噜| 国产高清精品在线| 精品国产伦理网| 日韩**一区毛片| 欧美精品在欧美一区二区少妇| 亚洲黄一区二区三区| a级高清视频欧美日韩| 日本一二三四高清不卡| 国产一本一道久久香蕉| 精品成人佐山爱一区二区| 日本成人在线看| 制服丝袜亚洲色图| 日本中文一区二区三区| 91精品国产欧美一区二区成人| 五月天一区二区| 欧美一区二区三区公司| 毛片不卡一区二区| 日韩欧美精品三级| 国内成人精品2018免费看| 精品国产露脸精彩对白| 韩日精品视频一区| 久久这里只有精品首页| 国产成人免费视频| 国产精品毛片大码女人| 97久久精品人人做人人爽| 亚洲精品videosex极品| 欧美午夜精品电影| 日韩av高清在线观看| 日韩精品在线看片z| 国产剧情在线观看一区二区| 国产欧美日韩三级| 色综合色综合色综合色综合色综合| 亚洲愉拍自拍另类高清精品| 欧美午夜理伦三级在线观看| 日本在线不卡视频一二三区| 欧美不卡一区二区三区| 国产69精品一区二区亚洲孕妇| 中文字幕一区二区视频| 色视频欧美一区二区三区| 亚州成人在线电影| 精品99999| 99久久99久久精品国产片果冻| 亚洲国产一区二区三区| 日韩免费成人网| 国产成人av福利| 亚洲综合色噜噜狠狠| 日韩午夜中文字幕| 成人高清视频在线| 天堂在线亚洲视频| 久久久久久麻豆| 在线精品视频小说1| 久久97超碰色|