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

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

?? des3.c

?? matrix ssl代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
		*cook   |= (*raw1 & 0x0003f000L) >> 4;
		*cook++ |= (*raw1 & 0x0000003fL);
	}

	psMemcpy(keyout, dough, sizeof dough);
	psBurnStack(sizeof(ulong32 *) * 2 + sizeof(ulong32)*32 + sizeof(int32));
}


static void deskey(const unsigned char *key, short edf, ulong32 *keyout)
{
	ulong32				i, j, l, m, n, kn[32];
	unsigned char		pc1m[56], pcr[56];

	for (j=0; j < 56; j++) {
		l = (ulong32)pc1[j];
		m = l & 7;
		pc1m[j] = (unsigned char)((key[l >> 3U] & bytebit[m]) == 
			bytebit[m] ? 1 : 0);
	}

	for (i=0; i < 16; i++) {
		if (edf == DE1) {
			m = (15 - i) << 1;
		} else {
			m = i << 1;
		}
		n = m + 1;
		kn[m] = kn[n] = 0L;
		for (j=0; j < 28; j++) {
			l = j + (ulong32)totrot[i];
			if (l < 28) {
				pcr[j] = pc1m[l];
			} else {
				pcr[j] = pc1m[l - 28];
			}
		}
		for (/*j = 28*/; j < 56; j++) {
			l = j + (ulong32)totrot[i];
			if (l < 56) {
				pcr[j] = pc1m[l];
			} else {
				pcr[j] = pc1m[l - 28];
			}
		}
		for (j=0; j < 24; j++)  {
			if ((int32)pcr[(int32)pc2[j]] != 0) {
				kn[m] |= bigbyte[j];
			}
			if ((int32)pcr[(int32)pc2[j+24]] != 0) {
				kn[n] |= bigbyte[j];
			}
		}
	}
	cookey(kn, keyout);
	psBurnStack(sizeof(int32)*5 + sizeof(ulong32)*32 + 
		sizeof(unsigned char)*112);
}

static void desfunc(ulong32 *block, const ulong32 *keys)
{
	ulong32 work, right, leftt;
	int32 cur_round;

	leftt = block[0];
	right = block[1];

#ifdef SMALL_CODE
	work = ((leftt >> 4)  ^ right) & 0x0f0f0f0fL;
	right ^= work;
	leftt ^= (work << 4);

	work = ((leftt >> 16) ^ right) & 0x0000ffffL;
	right ^= work;
	leftt ^= (work << 16);

	work = ((right >> 2)  ^ leftt) & 0x33333333L;
	leftt ^= work;
	right ^= (work << 2);

	work = ((right >> 8)  ^ leftt) & 0x00ff00ffL;
	leftt ^= work;
	right ^= (work << 8);

	right = ROLc(right, 1);
	work = (leftt ^ right) & 0xaaaaaaaaL;

	leftt ^= work;
	right ^= work;
	leftt = ROLc(leftt, 1);
#else /* SMALL_CODE */
{
	ulong64 tmp;
	tmp = des_ip[0][byte(leftt, 0)] ^
			des_ip[1][byte(leftt, 1)] ^
			des_ip[2][byte(leftt, 2)] ^
			des_ip[3][byte(leftt, 3)] ^
			des_ip[4][byte(right, 0)] ^
			des_ip[5][byte(right, 1)] ^
			des_ip[6][byte(right, 2)] ^
			des_ip[7][byte(right, 3)];
	leftt = (ulong32)(tmp >> 32);
	right = (ulong32)(tmp & 0xFFFFFFFFUL);
}
#endif /* SMALL CODE */

	for (cur_round = 0; cur_round < 8; cur_round++) {
		work	= RORc(right, 4) ^ *keys++;
		leftt	^= SP7[work        & 0x3fL]
				^ SP5[(work >>  8) & 0x3fL]
				^ SP3[(work >> 16) & 0x3fL]
				^ SP1[(work >> 24) & 0x3fL];
		work	 = right ^ *keys++;
		leftt	^= SP8[ work        & 0x3fL]
				^  SP6[(work >>  8) & 0x3fL]
				^  SP4[(work >> 16) & 0x3fL]
				^  SP2[(work >> 24) & 0x3fL];

		work	= RORc(leftt, 4) ^ *keys++;
		right	^= SP7[ work        & 0x3fL]
				^  SP5[(work >>  8) & 0x3fL]
				^  SP3[(work >> 16) & 0x3fL]
				^  SP1[(work >> 24) & 0x3fL];
		work	 = leftt ^ *keys++;
		right	^= SP8[ work        & 0x3fL]
				^  SP6[(work >>  8) & 0x3fL]
				^  SP4[(work >> 16) & 0x3fL]
				^  SP2[(work >> 24) & 0x3fL];
	}

#ifdef SMALL_CODE
	right = RORc(right, 1);
	work = (leftt ^ right) & 0xaaaaaaaaL;
	leftt ^= work;
	right ^= work;
	leftt = RORc(leftt, 1);
	work = ((leftt >> 8) ^ right) & 0x00ff00ffL;
	right ^= work;
	leftt ^= (work << 8);
	
	work = ((leftt >> 2) ^ right) & 0x33333333L;
	right ^= work;
	leftt ^= (work << 2);
	work = ((right >> 16) ^ leftt) & 0x0000ffffL;
	leftt ^= work;
	right ^= (work << 16);
	work = ((right >> 4) ^ leftt) & 0x0f0f0f0fL;
	leftt ^= work;
	right ^= (work << 4);
#else /* SMALL CODE */
	{
	ulong64 tmp;
	tmp = des_fp[0][byte(leftt, 0)] ^
			des_fp[1][byte(leftt, 1)] ^
			des_fp[2][byte(leftt, 2)] ^
			des_fp[3][byte(leftt, 3)] ^
			des_fp[4][byte(right, 0)] ^
			des_fp[5][byte(right, 1)] ^
			des_fp[6][byte(right, 2)] ^
			des_fp[7][byte(right, 3)];
		leftt = (ulong32)(tmp >> 32);
		right = (ulong32)(tmp & 0xFFFFFFFFUL);
	}
#endif /* SMALL CODE */

	block[0] = right;
	block[1] = leftt;
	psBurnStack(sizeof(ulong32) * 4 + sizeof(int32));
}

/*
	We don't validate DES keys against the following known weak keys.
	Astronomically small chances of randomly getting a weak key
	with 3DES. http://www.rsasecurity.com/rsalabs/faq/3-2-4.html

	http://www.itl.nist.gov/fipspubs/fip74.htm
	1.		E001E00lFl0lFl0l		01E001E00lFl0lFl
	2.		FElFFElFFEOEFEOE		1FFElFFEOEFEOEFE
	3.		E01FE01FF10EF10E		1FE01FEOOEF10EF1
	4.		01FE01FE01FE01FE		FE01FE01FE01FE01
	5.		011F011F0l0E010E		1F011F0l0E0l0E01
	6.		E0FEE0FEFlFEFlFE		FEE0FEE0FEFlFEF1
	7.		0101010101010101
	8.		FEFEFEFEFEFEFEFE
	9.		E0E0E0E0FlFlFlFl
	10.		lFlFlFlF0E0E0E0E
*/
int32 des3_setup(const unsigned char *key, int32 keylen, int32 num_rounds, 
					  des3_CBC *skey)
{
	if (key == NULL || skey == NULL) {
		return -1;
	}

	if( num_rounds != 0 && num_rounds != 16) {
		return CRYPT_INVALID_ROUNDS;
	}

	if (keylen != 24) {
		return CRYPT_INVALID_KEYSIZE;
	}

	deskey(key,		EN0, skey->key.ek[0]);
	deskey(key+8,	DE1, skey->key.ek[1]);
	deskey(key+16,	EN0, skey->key.ek[2]);

	deskey(key,		DE1, skey->key.dk[2]);
	deskey(key+8,	EN0, skey->key.dk[1]);
	deskey(key+16,	DE1, skey->key.dk[0]);

	return CRYPT_OK;
}

int des_setup(const unsigned char *key, int keylen, int num_rounds,
				des3_CBC *skey)
{

    if (num_rounds != 0 && num_rounds != 16) {
        return CRYPT_INVALID_ROUNDS;
    }

    if (keylen != 8) {
        return CRYPT_INVALID_KEYSIZE;
    }

    deskey(key, EN0, skey->key.ek[0]);
    deskey(key, DE1, skey->key.dk[0]);

    return CRYPT_OK;
}

void des3_ecb_encrypt(const unsigned char *pt, unsigned char *ct, 
							 des3_CBC *key)
{
	ulong32 work[2];

	LOAD32H(work[0], pt+0);
	LOAD32H(work[1], pt+4);
	desfunc(work, key->key.ek[0]);
	desfunc(work, key->key.ek[1]);
	desfunc(work, key->key.ek[2]);
	STORE32H(work[0],ct+0);
	STORE32H(work[1],ct+4);
}

void des_ecb_encrypt(const unsigned char *pt, unsigned char *ct,
							des3_CBC *key)
{
    ulong32 work[2];

    LOAD32H(work[0], pt+0);
    LOAD32H(work[1], pt+4);
    desfunc(work, key->key.ek[0]);
    STORE32H(work[0],ct+0);
    STORE32H(work[1],ct+4);
}

void des3_ecb_decrypt(const unsigned char *ct, unsigned char *pt, 
							 des3_CBC *key)
{
	ulong32 work[2];

	LOAD32H(work[0], ct+0);
	LOAD32H(work[1], ct+4);
	desfunc(work, key->key.dk[0]);
	desfunc(work, key->key.dk[1]);
	desfunc(work, key->key.dk[2]);
	STORE32H(work[0],pt+0);
	STORE32H(work[1],pt+4);
}

void des_ecb_decrypt(const unsigned char *ct, unsigned char *pt,
							des3_CBC *key)
{
    ulong32 work[2];
    LOAD32H(work[0], ct+0);
    LOAD32H(work[1], ct+4);
    desfunc(work, key->key.dk[0]);
    STORE32H(work[0],pt+0);
    STORE32H(work[1],pt+4);
}

int32 des3_keysize(int32 *desired_keysize)
{
    if(*desired_keysize < 24) {
        return CRYPT_INVALID_KEYSIZE;
    }
    *desired_keysize = 24;
    return CRYPT_OK;
}

/******************************************************************************/
/*
	Generate a 3DES key given a password and salt value.
	We use PKCS#5 2.0 PBKDF1 key derivation format with MD5 and count == 1 per:
	http://www.rsasecurity.com/rsalabs/pkcs/pkcs-5/index.html

	This key is compatible with the algorithm used by OpenSSL to encrypt keys
	generated with 'openssl genrsa'.  If other encryption formats are used
	(for example PBKDF2), or an iteration count > 0 is used, they are not 
	compatible with this simple implementation.  OpenSSL provides many options
	for converting key formats to the one used here.

	A 3DES key is 24 bytes long, to generate it with this algorithm,
	we md5 hash the password and salt for the first 16 bytes.  We then 
	hash these first 16 bytes with the password and salt again, generating 
	another 16 bytes.  We take the first 16 bytes and 8 of the second 16 to 
	form the 24 byte key.

	salt is assumed to point to 8 bytes of data
	key is assumed to point to 24 bytes of data
*/
void generate3DESKey(unsigned char *pass, int32 passlen, unsigned char *salt, 
					unsigned char *key)
{
	sslMd5Context_t		state;
	unsigned char		md5[SSL_MD5_HASH_SIZE];

	matrixMd5Init(&state);
	matrixMd5Update(&state, pass, passlen);
	matrixMd5Update(&state, salt, SSL_DES3_IV_LEN);
	matrixMd5Final(&state, md5);
	memcpy(key, md5, SSL_MD5_HASH_SIZE);

	matrixMd5Init(&state);
	matrixMd5Update(&state, md5, SSL_MD5_HASH_SIZE);
	matrixMd5Update(&state, pass, passlen);
	matrixMd5Update(&state, salt, SSL_DES3_IV_LEN);
	matrixMd5Final(&state, md5);
	memcpy(key + SSL_MD5_HASH_SIZE, md5, SSL_DES3_KEY_LEN - SSL_MD5_HASH_SIZE);
}


#ifdef PEERSEC_TEST

int32 matrixDes3Test()
{
	unsigned char key[24], pt[8], ct[8], tmp[8];
	des3_CBC skey;
	int32 x, err;

	for (x = 0; x < 8; x++) {
		pt[x] = x;
	}

	for (x = 0; x < 24; x++) {
		key[x] = x;
	}

	if ((err = des3_setup(key, 24, 0, &skey)) != CRYPT_OK) {
		return err;
	}

	des3_ecb_encrypt(pt, ct, &skey);
	des3_ecb_decrypt(ct, tmp, &skey);

	if (memcmp(pt, tmp, 8) != 0) {
		return CRYPT_FAIL_TESTVECTOR;
	}

	return CRYPT_OK;
}

int32 matrixDesTest()
{
	unsigned char key[8], pt[8], ct[8], tmp[8];
	des3_CBC skey;
	int32 x, err;

	for (x = 0; x < 8; x++) {
		pt[x] = x;
	}

	for (x = 0; x < 8; x++) {
		key[x] = x;
	}

	if ((err = des_setup(key, 8, 0, &skey)) != CRYPT_OK) {
		return err;
	}

	des_ecb_encrypt(pt, ct, &skey);
	des_ecb_decrypt(ct, tmp, &skey);

	if (memcmp(pt, tmp, 8) != 0) {
		return CRYPT_FAIL_TESTVECTOR;
	}

	return CRYPT_OK;
}

#endif /* PEERSEC_TEST */

#endif /* USE_3DES */

/******************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩高潮美女一区二区三区| 亚洲在线观看免费视频| 欧美性感一类影片在线播放| 成人黄色在线网站| 成人性生交大片免费看中文网站| 久久91精品久久久久久秒播| 日本aⅴ精品一区二区三区| 亚洲成人免费av| 香蕉影视欧美成人| 日韩成人午夜电影| 免费日本视频一区| 国产一区二区不卡老阿姨| 精品亚洲porn| 国产福利视频一区二区三区| 成人精品在线视频观看| 97精品超碰一区二区三区| 在线区一区二视频| 欧美浪妇xxxx高跟鞋交| 日韩午夜小视频| 精品国产亚洲一区二区三区在线观看| 欧美一区二区视频观看视频| 精品99久久久久久| 国产精品视频看| 亚洲精选在线视频| 蜜臀久久久久久久| 岛国精品在线播放| 欧美日韩免费一区二区三区视频| 欧美精品在线一区二区| 精品电影一区二区三区 | 亚洲综合丝袜美腿| 日本午夜一本久久久综合| 国产一区二区看久久| 99久久99久久久精品齐齐| 欧美午夜不卡在线观看免费| 精品日本一线二线三线不卡| 综合在线观看色| 男人的j进女人的j一区| eeuss鲁一区二区三区| 7878成人国产在线观看| 国产欧美日韩麻豆91| 亚洲一二三四在线观看| 国产精品一区一区三区| 欧美日韩国产精品自在自线| 久久麻豆一区二区| 亚州成人在线电影| av男人天堂一区| 精品免费日韩av| 亚洲一区二区三区四区五区中文| 精品一区二区三区蜜桃| 欧洲精品中文字幕| 国产精品乱码妇女bbbb| 毛片av中文字幕一区二区| 欧美午夜电影在线播放| 国产精品天天看| 国产综合久久久久久久久久久久| 欧美日韩一区小说| 亚洲日本va在线观看| 国产精品一区二区三区乱码| 91麻豆精品国产91久久久资源速度| 最新热久久免费视频| 国产露脸91国语对白| 91精品国产综合久久精品| 一区二区三区在线免费视频| 成人网在线播放| 国产欧美一区二区精品性 | 久久久99精品久久| 日韩激情一区二区| 欧美日本在线看| 午夜精品久久久久久久蜜桃app| 99精品在线免费| 国产精品久久看| 成人精品小蝌蚪| 成人欧美一区二区三区在线播放| 久久69国产一区二区蜜臀| 欧美成人一区二区三区在线观看 | 欧美人xxxx| 亚洲国产精品久久人人爱| 91极品美女在线| 亚洲午夜久久久久久久久久久| 91麻豆国产自产在线观看| 国产精品天干天干在观线| 波多野结衣亚洲| 亚洲精品免费电影| 欧美三级电影一区| 日韩综合小视频| 精品国产乱码久久久久久浪潮| 国产一区视频网站| 中文字幕免费一区| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲品质自拍视频网站| 精品视频免费在线| 美女脱光内衣内裤视频久久影院| 欧美成人激情免费网| 国产成人免费9x9x人网站视频| 国产精品灌醉下药二区| 777午夜精品免费视频| 日韩综合在线视频| www国产成人| www.久久精品| 婷婷六月综合网| 久久久亚洲高清| 色94色欧美sute亚洲线路二 | 精品国产一区二区三区忘忧草| 国产老肥熟一区二区三区| 亚洲欧美日韩在线播放| 欧美日韩成人一区| 国产精品综合一区二区| 夜夜夜精品看看| 久久理论电影网| 欧美日韩国产不卡| 亚洲已满18点击进入久久| 精品国产亚洲在线| 在线观看免费亚洲| 国产一区二区主播在线| 一区二区三区四区高清精品免费观看| 欧美日本韩国一区二区三区视频 | 99久久777色| 捆绑调教一区二区三区| 亚洲色图视频网站| 欧美变态口味重另类| 91浏览器入口在线观看| 狠狠色综合色综合网络| 亚洲国产成人va在线观看天堂| 亚洲精品一区二区精华| 欧美色偷偷大香| 成人av综合在线| 国模无码大尺度一区二区三区| 一区二区三区精品视频| 久久精品这里都是精品| 日韩一级片网站| 在线观看一区日韩| 99久久综合99久久综合网站| 老司机免费视频一区二区三区| 亚洲一区二区高清| 亚洲欧美日韩久久| 国产欧美精品一区| 精品国产免费视频| 欧美一区二区精品久久911| 欧美怡红院视频| 91猫先生在线| av不卡在线播放| 狠狠色综合日日| 精品一区二区三区视频在线观看 | 91天堂素人约啪| 成人在线综合网| 韩国在线一区二区| 免费av网站大全久久| 免费av成人在线| 蜜桃视频在线一区| 免费看黄色91| 麻豆国产欧美一区二区三区| 日韩国产精品久久久| 日韩国产精品久久| 麻豆精品一区二区综合av| 喷白浆一区二区| 青青草国产精品97视觉盛宴| 奇米四色…亚洲| 国产精品自在欧美一区| 国产成人综合在线观看| 国产成人精品1024| 岛国一区二区三区| 97超碰欧美中文字幕| 欧美色中文字幕| 91精品欧美福利在线观看 | 国产成人亚洲精品青草天美| 国产麻豆精品95视频| 成人免费观看男女羞羞视频| 不卡区在线中文字幕| 在线中文字幕一区| 欧美一二三区精品| 久久在线观看免费| 中文字幕亚洲区| 一区二区久久久久久| 天天综合网 天天综合色| 六月丁香综合在线视频| 国产ts人妖一区二区| 日本韩国一区二区| 69久久夜色精品国产69蝌蚪网| 日韩欧美一二区| 欧美激情在线看| 亚洲午夜电影在线观看| 精品一区二区日韩| gogogo免费视频观看亚洲一| 欧美日本乱大交xxxxx| 国产三级三级三级精品8ⅰ区| 日韩一区在线播放| 青娱乐精品视频在线| www.日韩精品| 欧美精品九九99久久| 国产欧美一区二区三区沐欲| 亚洲国产成人av好男人在线观看| 青青草精品视频| 色综合久久99| 精品久久久网站| 亚洲二区在线视频| 国产电影一区二区三区| 欧美二区乱c少妇| 中文字幕亚洲一区二区va在线| 日韩高清欧美激情| 日本久久电影网|