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

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

?? base64.c

?? linux集群服務器軟件代碼包
?? C
字號:
/* $Id: base64.c,v 1.11 2004/02/17 22:11:58 lars Exp $ */#include <portability.h>#include <heartbeat.h>#include <syslog.h>#include <string.h>#include <stdlib.h>#include "clplumbing/base64.h"/* * * Base64 conversion functions. * They convert from a binary array into a single string * in base 64.  This is almost (but not quite) like section 5.2 of RFC 1341 * The only difference is that we don't care about line lengths. * We do use their encoding algorithm. * */static char b64chars[]=	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";#define	EQUALS	'='#define	MASK6	(077)#define	MASK24	(077777777)/* Convert from binary to a base64 string (~ according to RFC1341) */intbinary_to_base64(const void * data, int nbytes, char * output, int outlen){	int	requiredlen = B64_stringlen(nbytes)+1; /* EOS */	char *		outptr;	const unsigned char *	inmax;	const unsigned char *	inlast;	const unsigned char *	inptr;	int	bytesleft;	if (outlen < requiredlen) {		syslog(LOG_ERR, "binary_to_base64: output area too small.");		return -1;	}	inptr = data;	/* Location of last whole 3-byte chunk */	inmax = inptr + ((nbytes / B64inunit)*B64inunit);	inlast = inptr + nbytes;	outptr = output;		/* Convert whole 3-byte chunks */	for (;inptr < inmax; inptr += B64inunit) {		unsigned long	chunk;		unsigned int	sixbits;		chunk =	((*inptr) << 16		|	((*(inptr+1)) << 8)		|	(*(inptr+2))) & MASK24;		sixbits = (chunk >> 18) & MASK6;		*outptr = b64chars[sixbits]; ++outptr;		sixbits = (chunk >> 12) & MASK6;		*outptr = b64chars[sixbits]; ++outptr;		sixbits = (chunk >> 6) & MASK6;		*outptr = b64chars[sixbits]; ++outptr;		sixbits = (chunk & MASK6);		*outptr = b64chars[sixbits]; ++outptr;	}	/* Do we have anything left over? */	bytesleft = inlast - inptr;	if (bytesleft > 0) {		/* bytesleft can only be 1 or 2 */		unsigned long	chunk;		unsigned int	sixbits;		/* Grab first byte */		chunk =	(*inptr) << 16;		if (bytesleft == 2) {			/* Grab second byte */			chunk |= ((*(inptr+1)) << 8);		}		chunk &= MASK24;		/* OK, now we have our chunk... */		sixbits = (chunk >> 18) & MASK6;		*outptr = b64chars[sixbits]; ++outptr;		sixbits = (chunk >> 12) & MASK6;		*outptr = b64chars[sixbits]; ++outptr;		if (bytesleft == 2) {			sixbits = (chunk >> 6) & MASK6;			*outptr = b64chars[sixbits];		}else{			*outptr = EQUALS;		}		++outptr;		*outptr = EQUALS; ++outptr;	}	*outptr = EOS;	/* Don't increment */	return (outptr - output);}/* This macro is only usable by the base64_to_binary() function. * * There are faster ways of doing this, but I didn't spend the time * to implement one of them.  If we have an array of six bit values,  * sized by 256 or so, then we could look it up. * FIXME: This is how it really ought to be done... */static unsigned char b64values [256];#define	BADVALUE	0xffstatic voidinit_b64_values(void){	int	j;	memset(b64values, BADVALUE, sizeof(b64values));	for (j=0; b64chars[j] != EOS; ++j) {		b64values[(int)b64chars[j]] = (unsigned char)j;	}}#define	Char2SixBits(in, out)  {				\	unsigned char  ch;					\	ch = b64values[(unsigned int)in];			\	if (ch == BADVALUE) {					\		syslog(LOG_ERR					\		,	"base64_to_binary: invalid input [%c]!"	\					,	in);		\		return -1;					\	}							\	out = ch;						\	}							\	/* Convert from a base64 string (~ according to RFC1341) to binary */intbase64_to_binary(const char * in, int inlen, void * output, int outlen){	int maxbinlen = B64_maxbytelen(inlen); /* Worst case size */	const char *		input = in;	const char *		lastinput = in + inlen - B64outunit;	int		equalcount = 0;	unsigned char *	startout;	unsigned char *	out;	unsigned	sixbits1;	unsigned	sixbits2;	unsigned	sixbits3;	unsigned	sixbits4;	unsigned long	chunk;	static	int	inityet = 0;	if (!inityet) {		inityet=1;		init_b64_values();	}	/* Make sure we have enough room */	if (outlen < maxbinlen) {		int	residue = maxbinlen - outlen;		if (residue > 2		||	input[inlen-1] != EQUALS		||	(residue == 2 && input[inlen-2] != EQUALS))  {			syslog(LOG_ERR			,	"base64_to_binary: output area too small.");			return -1;		}	}	if ((inlen % 4) != 0) {		syslog(LOG_ERR		,	"base64_to_binary: input length invalid.");		return -1;	}	if (inlen == 0) {		return 0;	}	/* We have enough space.  We are happy :-)  */	startout = out = (char *)output;	while (input < lastinput) {		Char2SixBits(*input, sixbits1); ++input;		Char2SixBits(*input, sixbits2); ++input;		Char2SixBits(*input, sixbits3); ++input;		Char2SixBits(*input, sixbits4); ++input;		chunk = (sixbits1 << 18)		|	(sixbits2 << 12) | (sixbits3 << 6) | sixbits4;		*out = ((chunk >> 16) & 0xff);	++out;		*out = ((chunk >>  8) & 0xff);	++out;		*out = (chunk & 0xff);		++out;	}	/* Process last 4 chars of input (1 to 3 bytes of output) */	/* The first two input chars must be normal chars */	Char2SixBits(*input, sixbits1); ++input;	Char2SixBits(*input, sixbits2); ++input;	/* We should find one of: (char,char) (char,=) or (=,=) */	/* We then output:         (3 bytes)  (2 bytes)  (1 byte) */	if (*input == EQUALS) {		/* The (=,=): 1 byte case */		equalcount=2;		sixbits3 = 0;		sixbits4 = 0;		/* We assume the 2nd char is an = sign :-) */	}else{		/* We have either the (char,char) or (char,=) case */		Char2SixBits(*input, sixbits3); ++input;		if (*input == EQUALS) {			/* The (char, =): 2 bytes case */			equalcount=1;			sixbits4 = 0;		}else{			/* The (char, char): 3 bytes case */			Char2SixBits(*input, sixbits4); ++input;			equalcount=0;		}	}	chunk = (sixbits1 << 18)	|	(sixbits2 << 12) | (sixbits3 << 6) | sixbits4;	/* We always have one more char to output... */	*out = ((chunk >> 16) & 0xff); ++out;	if (equalcount < 2) {		/* Zero or one equal signs: total of 2 or 3 bytes output */		*out = ((chunk >> 8) & 0xff); ++out;		if (equalcount < 1) {			/* No equal signs:  total of 3 bytes output */			*out = (chunk & 0xff); ++out;		}	}	return out - startout;}#if 0#define RAND(upb)	(rand()%(upb))void dumpbin(void * Bin, int length);void randbin(void * Bin, int length);voiddumpbin(void * Bin, int length){	unsigned char *	bin = Bin;	int	j;	for (j=0; j < length; ++j) {		fprintf(stderr, "%02x ", bin[j]);		if ((j % 32) == 31) {			fprintf(stderr, "\n");		}	}	fprintf(stderr, "\n");}voidrandbin(void * Bin, int length){	unsigned char *	bin = Bin;	int	j;	for (j=0; j < length; ++j) {		bin[j] = (unsigned char)RAND(256);	}	}#define MAXLEN	320#define	MAXSTRING B64_stringlen(MAXLEN)+1#define	MAXITER	300000intmain(int argc, char ** argv){	int	errcount = 0;	char	origbin[MAXLEN+1];	char	sourcebin[MAXLEN+1];	char	destbin[MAXLEN+1];	char	deststr[MAXSTRING];	int	maxiter = MAXITER;	int	j;		for (j=0; j < maxiter; ++j) {		int	iterlen = RAND(MAXLEN+1);		int	slen;		int	blen;		if ((j%100) == 99) {			fprintf(stderr, "+");		}		memset(origbin, 0, MAXLEN+1);		memset(sourcebin, 0, MAXLEN+1);		memset(destbin, 0, MAXLEN+1);		randbin(origbin, iterlen);		origbin[iterlen] = 0x1;		memcpy(sourcebin, origbin, iterlen);		sourcebin[iterlen] = 0x2;		slen = binary_to_base64(sourcebin, iterlen, deststr, MAXSTRING);		if (slen < 0) {			fprintf(stderr			,	"binary_to_base64 failure: length %d\n"			,	iterlen);			++errcount;			continue;		}		if (strlen(deststr) != slen) {			fprintf(stderr			,	"binary_to_base64 failure: length was %d (strlen) vs %d (ret value)\n"			,	strlen(deststr), slen);			fprintf(stderr, "binlen: %d, deststr: [%s]\n"			,	iterlen, deststr);			continue;			++errcount;		}		destbin[iterlen] = 0x3;		blen = base64_to_binary(deststr, slen, destbin, iterlen);		if (blen != iterlen) {			fprintf(stderr			,	"base64_to_binary failure: length was %d vs %d\n"			,	blen, iterlen);			dumpbin(origbin, iterlen);			fprintf(stderr			,	"Base64 intermediate: [%s]\n", deststr);			++errcount;			continue;		}		if (memcmp(destbin, origbin, iterlen) != 0) {			fprintf(stderr			,	"base64_to_binary mismatch. Orig:\n");			dumpbin(origbin, iterlen);			fprintf(stderr, "Dest:\n");			dumpbin(destbin, iterlen);			fprintf(stderr			,	"Base64 intermediate: [%s]\n", deststr);			++errcount;		}		if (destbin[iterlen] != 0x3) {			fprintf(stderr			,	"base64_to_binary corruption. dest byte: 0x%02x\n"			,	destbin[iterlen]);			++errcount;		}		if (sourcebin[iterlen] != 0x2) {			fprintf(stderr			,	"base64_to_binary corruption. source byte: 0x%02x\n"			,	sourcebin[iterlen]);			++errcount;		}		sourcebin[iterlen] = 0x0;		origbin[iterlen] = 0x0;		if (memcmp(sourcebin, origbin, MAXLEN+1) != 0) {			fprintf(stderr			,	"base64_to_binary corruption. origbin:\n");			dumpbin(origbin, MAXLEN+1);			fprintf(stderr, "sourcebin:\n");			dumpbin(sourcebin, MAXLEN+1);			++errcount;		}	}	fprintf(stderr, "\n%d iterations, %d errors.\n"	,	maxiter, errcount);	return errcount;}/* HA-logging function */voidha_log(int priority, const char * fmt, ...){	va_list		ap;	char		buf[MAXLINE];	va_start(ap, fmt);	vsnprintf(buf, MAXLINE, fmt, ap);	va_end(ap);	fprintf(stderr, "%s\n",  buf);}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美综合一区二区三区| eeuss鲁片一区二区三区在线观看| 日本一区二区动态图| 欧美videossexotv100| 欧美一区二区精品久久911| 欧美日韩高清影院| 在线不卡的av| 欧美电影免费观看完整版| 日韩视频免费直播| 久久久久久久久久久久久久久99| 久久亚洲综合av| 久久综合视频网| 中文字幕免费一区| 亚洲欧美日韩成人高清在线一区| 一卡二卡三卡日韩欧美| 亚洲18影院在线观看| 日本不卡一区二区三区| 激情久久久久久久久久久久久久久久| 国产精品一区二区久久不卡 | 久久天堂av综合合色蜜桃网| 久久嫩草精品久久久精品| 中文字幕av资源一区| 亚洲国产日韩在线一区模特| 男女男精品网站| 国产成人a级片| 欧美日韩中文国产| www精品美女久久久tv| 亚洲免费在线电影| 日日夜夜精品视频免费| 国产精品一区在线观看乱码| 色丁香久综合在线久综合在线观看| 欧美日韩国产一级| 久久―日本道色综合久久| 一区二区三区在线观看网站| 毛片av中文字幕一区二区| www.亚洲激情.com| 精品粉嫩超白一线天av| 夜夜嗨av一区二区三区网页| 国产麻豆视频精品| 欧美人狂配大交3d怪物一区| 欧美精品一区二区三区蜜臀| 亚洲午夜羞羞片| 成人午夜电影网站| 日韩丝袜情趣美女图片| 亚洲精品国产a| 丁香激情综合五月| 欧美一级艳片视频免费观看| 亚洲美女视频在线观看| 丁香网亚洲国际| 日韩一级免费观看| 亚洲午夜视频在线观看| 成人av在线播放网址| 精品久久久久久久久久久久久久久久久 | 国产成人在线免费观看| 91女人视频在线观看| 久久久九九九九| 美女视频黄 久久| 欧美精品一二三区| 亚洲三级免费观看| 丁香婷婷综合色啪| 久久伊人中文字幕| 麻豆91精品91久久久的内涵| 欧美午夜精品久久久久久超碰| 欧美极品少妇xxxxⅹ高跟鞋 | 欧美偷拍一区二区| 国产精品美女久久久久久久| 国产精品一区二区在线观看网站 | 日本高清成人免费播放| 国产精品久久久爽爽爽麻豆色哟哟| 国模一区二区三区白浆| 日韩欧美一区在线| 日本最新不卡在线| 欧美一区二区在线视频| 日日摸夜夜添夜夜添亚洲女人| 在线日韩国产精品| 一区二区三区四区视频精品免费| www.日韩在线| 一区二区成人在线视频| 欧洲一区二区三区在线| 一区二区成人在线| 4438x成人网最大色成网站| 日韩黄色在线观看| 欧美一区二区三区在| 免费三级欧美电影| 亚洲精品一区二区精华| 国产成人免费av在线| 国产精品美女久久久久av爽李琼| gogo大胆日本视频一区| 18欧美亚洲精品| 欧美日韩国产一区| 激情综合网激情| 亚洲国产精品黑人久久久| 91蝌蚪porny成人天涯| 亚洲成人免费在线| 精品久久久久一区二区国产| 丁香婷婷综合色啪| 亚洲国产精品精华液网站| 欧美一区二区三区精品| 国产福利91精品一区二区三区| 中文字幕一区在线观看视频| 在线视频中文字幕一区二区| 裸体健美xxxx欧美裸体表演| 久久精品亚洲一区二区三区浴池| 91丨porny丨国产| 亚洲成a人v欧美综合天堂下载 | 亚洲欧洲三级电影| 欧美网站大全在线观看| 国产一区二区三区av电影| 一区二区三区日韩在线观看| 一区二区成人在线观看| 日韩一区二区三区免费观看| 成人国产精品视频| 日韩精品一区第一页| 亚洲国产精品精华液2区45| 欧美日韩一二区| 成人三级伦理片| 日韩不卡一区二区| 国产精品久久免费看| 日韩精品最新网址| 日本韩国精品一区二区在线观看| 日本午夜精品一区二区三区电影| 国产精品亲子伦对白| 欧美一卡2卡3卡4卡| 色噜噜狠狠色综合欧洲selulu| 韩国精品久久久| 天天av天天翘天天综合网色鬼国产 | 亚洲色图另类专区| 精品女同一区二区| 欧美日韩黄色一区二区| 成人免费视频国产在线观看| 青草国产精品久久久久久| 亚洲美腿欧美偷拍| 国产精品久久久久久福利一牛影视 | 精品一区免费av| 亚洲成人777| 亚洲精品免费视频| 一区视频在线播放| 久久嫩草精品久久久久| 欧美一二三区在线| 精品婷婷伊人一区三区三| 一本一本大道香蕉久在线精品| 国产a区久久久| 国产毛片精品一区| 国产精品资源网| 国产精品影音先锋| 国产激情视频一区二区三区欧美| 免费在线成人网| 奇米影视在线99精品| 天堂va蜜桃一区二区三区 | 国产精品无人区| 欧美国产精品一区二区三区| 久久夜色精品国产欧美乱极品| 精品国产自在久精品国产| 91精品国产综合久久福利| 91麻豆精品国产91久久久| 欧美一区二区国产| 欧美成人午夜电影| 精品处破学生在线二十三| 久久人人97超碰com| 国产精品色婷婷久久58| 亚洲欧洲www| 亚洲3atv精品一区二区三区| 日本中文字幕不卡| 久久av老司机精品网站导航| 国产中文字幕精品| 国产激情精品久久久第一区二区| 处破女av一区二区| 91麻豆.com| 欧美日韩国产123区| 欧美成人精品福利| 国产精品久久三| 亚洲午夜日本在线观看| 免费成人在线观看| 国产91对白在线观看九色| 色偷偷成人一区二区三区91| 欧美日韩一级二级三级| 精品第一国产综合精品aⅴ| 国产精品美女一区二区三区| 亚洲一二三级电影| 韩国中文字幕2020精品| www.欧美日韩| 欧美一级免费大片| 中文字幕免费观看一区| 午夜精品福利在线| 国产乱子伦视频一区二区三区| 99久久精品一区二区| 3d成人h动漫网站入口| 久久精品人人做人人爽人人| 亚洲小少妇裸体bbw| 国产精品一区在线| 欧美久久久一区| 中文字幕一区av| 久久电影国产免费久久电影| 91原创在线视频| 久久久久久夜精品精品免费| 亚洲乱码精品一二三四区日韩在线| 另类小说欧美激情| 欧美性感一类影片在线播放| 2020国产精品| 日韩精品欧美精品|