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

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

?? base64decoder.h

?? 用于base64的解密 將一個包含base64的文件內(nèi)容取出以后進行解密放到指定的文件里面去
?? H
字號:
////////////////////////////////////////////////////////////
// base64.h

// 參考文章:http://www.cstc.net.cn/docs/docs.php?id=202

//************************************************************************/
//    base64編碼表
// 
//		0 A 17 R 34 i 51 z 
//		1 B 18 S 35 j 52 0 
//		2 C 19 T 36 k 53 1 
//		3 D 20 U 37 l 54 2 
//		4 E 21 V 38 m 55 3 
//		5 F 22 W 39 n 56 4 
//		6 G 23 X 40 o 57 5 
//		7 H 24 Y 41 p 58 6 
//		8 I 25 Z 42 q 59 7 
//		9 J 26 a 43 r 60 8 
//		10 K 27 b 44 s 61 9 
//		11 L 28 c 45 t 62 + 
//		12 M 29 d 46 u 63 / 
//		13 N 30 e 47 v (pad) = 
//		14 O 31 f 48 w 
//		15 P 32 g 49 x 
//		16 Q 33 h 50 y 
//
// base64編碼步驟:
// 
//		原文:
//
//		你好
//		C4 E3 BA C3
//		11000100 11100011 10111010 11000011
//		00110001 00001110 00001110 00111010
//		49       14							(十進制)
//		x        O        O        6		字符
//		01111000 01001111 01001111 00110110
//		78									(十六進制)
//		xOO6
//
//		解碼:
//		xOO6
//		78 4f 4f 36
//		01111000 01001111 01001111 00110110
//		49       14 
//		00110001 00001110 00001110 00111010   31 0e 0e 3a
//
//		11000100 11100011 10111010
//		C4       E3       BA
//

#ifndef _BASE64_INCLUDE__H__
#define _BASE64_INCLUDE__H__

// 編碼后的長度一般比原文多占1/3的存儲空間,請保證base64code有足夠的空間
inline int Base64Encode(char * base64code, const char * src, int src_len = 0); 
inline int Base64Decode(char * buf, const char * base64code, int src_len = 0);

__inline char GetB64Char(int index)
{
	const char szBase64Table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
	if (index >= 0 && index < 64)
		return szBase64Table[index];
	
	return '=';
}

// 從雙字中取單字節(jié)
#define B0(a) (a & 0xFF)
#define B1(a) (a >> 8 & 0xFF)
#define B2(a) (a >> 16 & 0xFF)
#define B3(a) (a >> 24 & 0xFF)

// 編碼后的長度一般比原文多占1/3的存儲空間,請保證base64code有足夠的空間
inline int Base64Encode(char * base64code, const char * src, int src_len) 
{   
	if (src_len == 0)
		src_len = strlen(src);
	
	int len = 0;
	unsigned char* psrc = (unsigned char*)src;
	char * p64 = base64code;
	for (int i = 0; i < src_len - 3; i += 3)
	{
		unsigned long ulTmp = *(unsigned long*)psrc;
		register int b0 = GetB64Char((B0(ulTmp) >> 2) & 0x3F); 
		register int b1 = GetB64Char((B0(ulTmp) << 6 >> 2 | B1(ulTmp) >> 4) & 0x3F); 
		register int b2 = GetB64Char((B1(ulTmp) << 4 >> 2 | B2(ulTmp) >> 6) & 0x3F); 
		register int b3 = GetB64Char((B2(ulTmp) << 2 >> 2) & 0x3F); 
		*((unsigned long*)p64) = b0 | b1 << 8 | b2 << 16 | b3 << 24;
		len += 4;
		p64  += 4; 
		psrc += 3;
	}
	
	// 處理最后余下的不足3字節(jié)的餓數(shù)據(jù)
	if (i < src_len)
	{
		int rest = src_len - i;
		unsigned long ulTmp = 0;
		for (int j = 0; j < rest; ++j)
		{
			*(((unsigned char*)&ulTmp) + j) = *psrc++;
		}
		
		p64[0] = GetB64Char((B0(ulTmp) >> 2) & 0x3F); 
		p64[1] = GetB64Char((B0(ulTmp) << 6 >> 2 | B1(ulTmp) >> 4) & 0x3F); 
		p64[2] = rest > 1 ? GetB64Char((B1(ulTmp) << 4 >> 2 | B2(ulTmp) >> 6) & 0x3F) : '='; 
		p64[3] = rest > 2 ? GetB64Char((B2(ulTmp) << 2 >> 2) & 0x3F) : '='; 
		p64 += 4; 
		len += 4;
	}
	
	*p64 = '\0'; 
	
	return len;
}


__inline int GetB64Index(char ch)
{
	int index = -1;
	if (ch >= 'A' && ch <= 'Z')
	{
		index = ch - 'A';
	}
	else if (ch >= 'a' && ch <= 'z')
	{
		index = ch - 'a' + 26;
	}
	else if (ch >= '0' && ch <= '9')
	{
		index = ch - '0' + 52;
	}
	else if (ch == '+')
	{
		index = 62;
	}
	else if (ch == '/')
	{
		index = 63;
	}

	return index;
}

// 解碼后的長度一般比原文少用占1/4的存儲空間,請保證buf有足夠的空間
inline int Base64Decode(char * buf, const char * base64code, int src_len) 
{   
	if (src_len == 0)
		src_len = strlen(base64code);

	int len = 0;
	unsigned char* psrc = (unsigned char*)base64code;
	char * pbuf = buf;
	for (int i = 0; i < src_len - 4; i += 4)
	{
		unsigned long ulTmp = *(unsigned long*)psrc;
		
		register int b0 = (GetB64Index((char)B0(ulTmp)) << 2 | GetB64Index((char)B1(ulTmp)) << 2 >> 6) & 0xFF;
		register int b1 = (GetB64Index((char)B1(ulTmp)) << 4 | GetB64Index((char)B2(ulTmp)) << 2 >> 4) & 0xFF;
		register int b2 = (GetB64Index((char)B2(ulTmp)) << 6 | GetB64Index((char)B3(ulTmp)) << 2 >> 2) & 0xFF;
		
		*((unsigned long*)pbuf) = b0 | b1 << 8 | b2 << 16;
		psrc  += 4; 
		pbuf += 3;
		len += 3;
	}

	// 處理最后余下的不足4字節(jié)的餓數(shù)據(jù)
	if (i < src_len)
	{
		int rest = src_len - i;
		unsigned long ulTmp = 0;
		for (int j = 0; j < rest; ++j)
		{
			*(((unsigned char*)&ulTmp) + j) = *psrc++;
		}
		
		register int b0 = (GetB64Index((char)B0(ulTmp)) << 2 | GetB64Index((char)B1(ulTmp)) << 2 >> 6) & 0xFF;
		*pbuf++ = b0;
		len  ++;

		if ('=' != B1(ulTmp) && '=' != B2(ulTmp))
		{
			register int b1 = (GetB64Index((char)B1(ulTmp)) << 4 | GetB64Index((char)B2(ulTmp)) << 2 >> 4) & 0xFF;
			*pbuf++ = b1;
			len  ++;
		}
		
		if ('=' != B2(ulTmp) && '=' != B3(ulTmp))
		{
			register int b2 = (GetB64Index((char)B2(ulTmp)) << 6 | GetB64Index((char)B3(ulTmp)) << 2 >> 2) & 0xFF;
			*pbuf++ = b2;
			len  ++;
		}

	}
		
	*pbuf = '\0'; 
	
	return len;
} 

#endif // #ifndef _BASE64_INCLUDE__H__


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美女天天操| 亚洲韩国一区二区三区| 亚洲欧美在线aaa| 午夜电影一区二区三区| 粉嫩绯色av一区二区在线观看| 欧美色大人视频| 国产欧美日产一区| 蜜桃一区二区三区四区| 色丁香久综合在线久综合在线观看| 欧美mv日韩mv国产| 亚洲国产sm捆绑调教视频 | 亚洲免费观看高清在线观看| 热久久免费视频| 在线观看一区二区视频| 国产欧美精品一区| 激情五月激情综合网| 欧美人妇做爰xxxⅹ性高电影| 国产精品三级av在线播放| 久久国产福利国产秒拍| 精品视频全国免费看| 亚洲精品国久久99热| 成人一区二区视频| 国产性天天综合网| 国产在线不卡一卡二卡三卡四卡| 欧美日韩的一区二区| 一区二区三区 在线观看视频| 不卡av免费在线观看| 26uuu欧美| 精品影院一区二区久久久| 日韩一区二区三区观看| 天天色综合天天| 欧美日韩在线三区| 亚洲精品国产高清久久伦理二区| 97精品国产露脸对白| 国产精品色婷婷久久58| 不卡视频免费播放| 国产精品毛片久久久久久| 成人免费视频一区| 国产精品福利电影一区二区三区四区| 国产成人午夜精品影院观看视频| 久久久精品2019中文字幕之3| 日韩av中文字幕一区二区三区| 欧美少妇一区二区| 午夜影视日本亚洲欧洲精品| 欧美精选一区二区| 日本亚洲一区二区| 亚洲精品在线观看视频| 国产乱码精品一品二品| 国产日韩欧美不卡| 丁香网亚洲国际| 日韩美女视频一区二区| 在线看国产日韩| 奇米精品一区二区三区在线观看一 | 成人午夜视频福利| 日韩伦理免费电影| 欧美日韩日日夜夜| 韩日欧美一区二区三区| 国产精品污网站| 在线一区二区三区四区| 日韩精品91亚洲二区在线观看| 精品国产乱码久久久久久老虎| 成人一级片在线观看| 亚洲一区二三区| 欧美一区二区私人影院日本| 国产精品综合视频| 亚洲蜜臀av乱码久久精品蜜桃| 在线不卡一区二区| 成人午夜免费视频| 首页亚洲欧美制服丝腿| 国产欧美精品一区二区三区四区| 一本高清dvd不卡在线观看| 日韩电影在线观看电影| 欧美极品美女视频| 在线播放/欧美激情| 国产91在线观看| 日韩国产精品大片| 国产精品美日韩| 日韩一区二区在线播放| 99国产精品久久久| 久久成人18免费观看| 亚洲男同1069视频| 亚洲私人黄色宅男| 精品久久久久久久久久久院品网| 91蜜桃视频在线| 国产精品一二一区| 日韩电影在线观看一区| 一区二区三区在线影院| 久久九九久久九九| 日韩一区二区精品| 欧美在线视频日韩| av高清不卡在线| 国产一区在线看| 日本午夜一区二区| 亚洲一级二级三级| 国产精品灌醉下药二区| 精品成人免费观看| 555www色欧美视频| 欧美性色黄大片手机版| 成人av手机在线观看| 久久精品99久久久| 午夜精品在线看| 一区二区三区高清在线| 国产精品久久免费看| 国产无人区一区二区三区| 日韩写真欧美这视频| 在线综合+亚洲+欧美中文字幕| 日本高清不卡在线观看| 99精品视频在线观看免费| 国产不卡视频一区二区三区| 狠狠色2019综合网| 韩日精品视频一区| 国产一区二区三区在线观看免费 | 精品视频1区2区| 在线观看视频欧美| 91啦中文在线观看| 99视频精品全部免费在线| 国产精品一区专区| 欧美在线色视频| av在线不卡免费看| 99re热视频精品| 91老司机福利 在线| 91久久精品网| 欧美日韩日本视频| 91精品国产入口在线| 日韩一区二区麻豆国产| 日韩精品专区在线| 久久综合狠狠综合久久激情 | 亚洲欧洲国产日韩| 国产精品久久久久久久蜜臀| 国产精品久久夜| 亚洲激情自拍视频| 亚洲综合激情网| 五月天精品一区二区三区| 免费高清成人在线| 国产精品自拍三区| 99天天综合性| 欧美午夜宅男影院| 日韩欧美在线1卡| 久久久午夜电影| 亚洲日本护士毛茸茸| 亚洲男帅同性gay1069| 午夜精品久久一牛影视| 久久国产精品一区二区| 成人av在线看| 欧美日韩中文字幕精品| 精品免费日韩av| 中文字幕一区二区三区四区 | 亚洲你懂的在线视频| 亚洲bt欧美bt精品| 麻豆极品一区二区三区| 不卡一二三区首页| 91精品国产91久久久久久最新毛片| 精品免费99久久| 亚洲毛片av在线| 久久99九九99精品| 99精品国产视频| 欧美一区二区三区影视| 国产精品少妇自拍| 99视频国产精品| 欧美日韩不卡一区二区| 久久久午夜精品| 亚洲国产欧美在线人成| 国产精品一级黄| 9191精品国产综合久久久久久 | 亚洲色图制服丝袜| 日本sm残虐另类| 99久久99久久久精品齐齐| 日韩一区二区免费在线电影| 成人免费小视频| 国内精品伊人久久久久av一坑| 97国产精品videossex| www精品美女久久久tv| 亚洲成av人在线观看| 成人av第一页| 欧美v国产在线一区二区三区| 一区二区三区不卡视频在线观看 | 亚洲1区2区3区视频| 成人avav在线| 久久美女艺术照精彩视频福利播放| 亚洲一区二区三区国产| 福利电影一区二区| 日韩美女视频一区二区在线观看| 亚洲黄网站在线观看| 丰满少妇在线播放bd日韩电影| 日韩一区二区三区四区五区六区| 一区二区三区 在线观看视频| 成人深夜在线观看| 久久久久久久久久久久电影| 免费在线观看一区二区三区| 欧美视频一区二区三区在线观看| 国产精品无人区| 国产成人精品一区二| 日韩免费高清视频| 欧美aaaaa成人免费观看视频| 91黄色激情网站| 亚洲女性喷水在线观看一区| 不卡的电影网站| 国产精品久久久久aaaa樱花| 成人黄页在线观看| 国产精品久久久久一区二区三区|