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

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

?? blowfish.cpp

?? spring+hibenate+struts開發(fā)
?? CPP
字號:
// blowfish.cpp   C++ class implementation of the BLOWFISH encryption algorithm
// _THE BLOWFISH ENCRYPTION ALGORITHM_
// by Bruce Schneier
// Revised code--3/20/94
// Converted to C++ class 5/96, Jim Conger
//
// modify H.Shirouzu 07/2002 (add change_order(), CBC mode)
// modify H.Shirouzu 01/2004 (add PKCS#5 mode)

#include <string.h>
#include "blowfish.h"
#include "blowfish.h2"	// holds the random digit tables

#define S(x,i) (SBoxes[i][x.w.byte##i])
#define bf_F(x) (((S(x,0) + S(x,1)) ^ S(x,2)) + S(x,3))
#define ROUND(a,b,n) (a.dword ^= bf_F(b) ^ PArray[n])

CBlowFish::CBlowFish (const BYTE *key, int keybytes)
{
	PArray = new DWORD [NPASS + 2];
	SBoxes = new DWORD [4][256];

	if (key)
		Initialize(key, keybytes);
}

CBlowFish::~CBlowFish ()
{
	delete [] SBoxes;
	delete [] PArray;
}

	// the low level (private) encryption function
void CBlowFish::Blowfish_encipher(DWORD *xl, DWORD *xr)
{
	union aword  Xl, Xr;

	Xl.dword = *xl;
	Xr.dword = *xr;

	Xl.dword ^= PArray[0];
	ROUND(Xr, Xl, 1);  ROUND(Xl, Xr, 2);
	ROUND(Xr, Xl, 3);  ROUND(Xl, Xr, 4);
	ROUND(Xr, Xl, 5);  ROUND(Xl, Xr, 6);
	ROUND(Xr, Xl, 7);  ROUND(Xl, Xr, 8);
	ROUND(Xr, Xl, 9);  ROUND(Xl, Xr, 10);
	ROUND(Xr, Xl, 11); ROUND(Xl, Xr, 12);
	ROUND(Xr, Xl, 13); ROUND(Xl, Xr, 14);
	ROUND(Xr, Xl, 15); ROUND(Xl, Xr, 16);
	Xr.dword ^= PArray[17];

	*xr = Xl.dword;
	*xl = Xr.dword;
}

	// the low level (private) decryption function
void CBlowFish::Blowfish_decipher(DWORD *xl, DWORD *xr)
{
	union aword  Xl;
	union aword  Xr;

	Xl.dword = *xl;
	Xr.dword = *xr;

	Xl.dword ^= PArray[17];
	ROUND(Xr, Xl, 16);  ROUND(Xl, Xr, 15);
	ROUND(Xr, Xl, 14);  ROUND(Xl, Xr, 13);
	ROUND(Xr, Xl, 12);  ROUND(Xl, Xr, 11);
	ROUND(Xr, Xl, 10);  ROUND(Xl, Xr, 9);
	ROUND(Xr, Xl, 8);   ROUND(Xl, Xr, 7);
	ROUND(Xr, Xl, 6);   ROUND(Xl, Xr, 5);
	ROUND(Xr, Xl, 4);   ROUND(Xl, Xr, 3);
	ROUND(Xr, Xl, 2);   ROUND(Xl, Xr, 1);
	Xr.dword ^= PArray[0];

	*xl = Xr.dword;
	*xr = Xl.dword;
}


	// constructs the enctryption sieve
void CBlowFish::Initialize(const BYTE *key, int keybytes)
{
	int  		i, j;
	DWORD		datal, datar;
	union aword	temp;

	// first fill arrays from data tables
	for (i = 0; i < NPASS + 2; i++)
		PArray[i] = bf_P[i];

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 256; j++)
			SBoxes[i][j] = bf_S[i][j];
	}

	for (i=0, j=0; i < NPASS + 2; i++)
	{
		temp.w.byte0 = key[j++ % keybytes];
		temp.w.byte1 = key[j++ % keybytes];
		temp.w.byte2 = key[j++ % keybytes];
		temp.w.byte3 = key[j++ % keybytes];
		PArray[i] ^= temp.dword;
	}

	datal = datar = 0;

	for (i = 0; i < NPASS + 2; i += 2)
	{
		Blowfish_encipher(&datal, &datar);
		PArray[i] = datal;
		PArray[i + 1] = datar;
	}

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 256; j += 2)
		{
			Blowfish_encipher(&datal, &datar);
			SBoxes[i][j] = datal;
			SBoxes[i][j + 1] = datar;
		}
	}
}

	// get output length, which must be even MOD 8
DWORD CBlowFish::GetOutputLength(DWORD lInputLong, int mode)
{
	if (mode & BF_PKCS5)
		lInputLong++;
	return	ALIGN_SIZE(lInputLong, BF_BLKSIZE);
}

	// change byte order
#ifdef ORDER_ABCD
#define change_order
#else
inline void change_order(DWORD *val)
{
	aword	org_val;
	org_val.dword = *val;

	((aword *)val)->w.byte0 = org_val.byte[0];
	((aword *)val)->w.byte1 = org_val.byte[1];
	((aword *)val)->w.byte2 = org_val.byte[2];
	((aword *)val)->w.byte3 = org_val.byte[3];
}
#endif

	// Encrypt pIntput into pOutput.  Input length in lSize.  Returned value
	// is length of output which will be even MOD 8 bytes.  Input buffer and
	// output buffer can be the same, but be sure buffer length is even MOD 8.
DWORD CBlowFish::Encrypt(const BYTE *pInput, BYTE *pOutput, DWORD lSize, int mode, _int64 IV)
{
	DWORD 	lCount, lOutSize, *dwOutput = (DWORD *)pOutput;

	if (pInput != pOutput)
		memcpy(pOutput, pInput, lSize);

	lOutSize = GetOutputLength(lSize, mode);
	memset(pOutput + lSize, (mode & BF_PKCS5) ? lOutSize - lSize : 0, lOutSize - lSize);

	for (lCount = 0; lCount < lOutSize; lCount += BF_BLKSIZE)
	{
		if (mode & BF_CBC)
			*(_int64 *)dwOutput ^= IV;

		change_order(dwOutput); change_order(dwOutput + 1);

		Blowfish_encipher(dwOutput, dwOutput + 1);

		change_order(dwOutput); change_order(dwOutput + 1);

		if (mode & BF_CBC)
			IV = *(_int64 *)dwOutput;
		dwOutput += 2;
	}

	return lCount;
}

	// Decrypt pIntput into pOutput.  Input length in lSize.  Input buffer and
	// output buffer can be the same, but be sure buffer length is even MOD 8.
DWORD CBlowFish::Decrypt(const BYTE *pInput, BYTE *pOutput, DWORD lSize, int mode, _int64 IV)
{
	DWORD	lCount, *dwOutput = (DWORD *)pOutput;
	_int64	prevIV = 0;

	if (pInput != pOutput)
		memcpy(pOutput, pInput, lSize);

	for (lCount = 0; lCount < lSize; lCount += BF_BLKSIZE)
	{
		if (mode & BF_CBC)
		{
			prevIV = IV;
			IV = *(_int64 *)dwOutput;
		}

		change_order(dwOutput); change_order(dwOutput + 1);

		Blowfish_decipher(dwOutput, dwOutput + 1);

		change_order(dwOutput); change_order(dwOutput + 1);

		if (mode & BF_CBC)
			*(_int64 *)dwOutput ^= prevIV;
		dwOutput += 2;
	}

	if (mode & BF_PKCS5)
	{
		DWORD	paddingLen = pOutput[lCount - 1];
		if (paddingLen <= 0 || paddingLen > BF_BLKSIZE || pOutput[lCount - paddingLen] != paddingLen)
			return	0;	// error
		pOutput[lCount -= paddingLen] = 0;
	}
	return	lCount;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久动漫| 26uuu国产电影一区二区| 欧美一区二区视频观看视频| 日韩精品一区二区三区中文不卡| 国产精品成人在线观看| 极品少妇一区二区| 在线日韩国产精品| 亚洲欧洲av色图| 国产69精品一区二区亚洲孕妇| 欧美乱熟臀69xxxxxx| 亚洲女爱视频在线| 国产成人小视频| 欧美v国产在线一区二区三区| 亚洲一区二区精品3399| 99视频精品全部免费在线| 精品国产一区二区三区久久久蜜月| 亚洲国产精品尤物yw在线观看| 91在线精品一区二区| 久久精品一区二区三区不卡牛牛| 秋霞成人午夜伦在线观看| 日本高清无吗v一区| 18成人在线视频| aaa欧美大片| 中文字幕av一区二区三区免费看| 国产精品中文字幕日韩精品 | 亚洲国产综合在线| 成人的网站免费观看| 中文av一区二区| 国产精品中文有码| 国产三区在线成人av| 国产一区二区三区久久久| 精品日韩欧美在线| 成人av中文字幕| 日本一区二区成人| 成年人国产精品| 亚洲欧美一区二区三区极速播放| 99视频热这里只有精品免费| 亚洲精品日韩专区silk| 色欧美日韩亚洲| 亚洲综合999| 日韩欧美一区二区免费| 极品少妇xxxx精品少妇偷拍| 久久午夜色播影院免费高清| 国产成人免费视频网站| 国产精品久久久久久久浪潮网站| 成人高清免费在线播放| 一区二区三国产精华液| 欧美日韩精品一区二区三区四区| 亚瑟在线精品视频| 欧美va天堂va视频va在线| 国产激情视频一区二区在线观看 | 久久久久久久电影| a级精品国产片在线观看| 亚洲欧美另类小说| 欧美精品高清视频| 国产激情一区二区三区| 中文字幕在线不卡一区| 欧美一区三区二区| 成人白浆超碰人人人人| 亚洲小说欧美激情另类| 亚洲精品一区二区三区四区高清 | 日韩成人精品视频| 久久久777精品电影网影网| av色综合久久天堂av综合| 夜夜嗨av一区二区三区网页| 日韩午夜在线影院| 99久久精品国产麻豆演员表| 丝袜美腿亚洲综合| 国产免费久久精品| 欧美日韩一区二区三区在线| 激情五月婷婷综合| 亚洲chinese男男1069| 久久午夜免费电影| 99国内精品久久| 精品一区二区三区免费毛片爱| 日韩美女视频一区| 欧美精品电影在线播放| 精品一区二区三区欧美| 亚洲妇女屁股眼交7| 日本一区二区视频在线| 成人激情小说网站| 国产在线视频一区二区三区| 亚洲精选视频免费看| 国产午夜精品一区二区三区嫩草| 欧美久久一二三四区| 99精品视频中文字幕| 韩日av一区二区| 亚洲一区在线看| 国产精品无人区| 久久亚洲影视婷婷| 精品国精品国产| 欧美日韩你懂得| 欧美性淫爽ww久久久久无| 暴力调教一区二区三区| 久99久精品视频免费观看| 天天综合日日夜夜精品| 亚洲一区二区综合| 亚洲美女区一区| 自拍偷在线精品自拍偷无码专区| 国产清纯美女被跳蛋高潮一区二区久久w | 国产精品天美传媒沈樵| 欧美一级一级性生活免费录像| 在线欧美一区二区| 91在线一区二区三区| 国产一区二区三区免费播放| 亚洲成人在线观看视频| 伊人性伊人情综合网| 欧美极品少妇xxxxⅹ高跟鞋| 久久久久久99久久久精品网站| 欧美疯狂做受xxxx富婆| 91麻豆精东视频| 97se亚洲国产综合在线| 色综合久久中文字幕综合网| 91老师国产黑色丝袜在线| 成人福利视频网站| 色综合天天综合色综合av| 91在线视频官网| 色成年激情久久综合| 欧美亚洲动漫另类| 69堂成人精品免费视频| 日韩欧美成人一区| 26uuuu精品一区二区| 久久久久免费观看| 国产精品久久久久久一区二区三区| 国产亚洲精品资源在线26u| 欧美激情综合在线| 亚洲欧美日韩成人高清在线一区| 亚洲欧美国产毛片在线| 樱桃国产成人精品视频| 国产精品久久久久婷婷| 亚洲国产一区二区三区青草影视| 日本亚洲一区二区| 麻豆国产精品视频| 懂色中文一区二区在线播放| 91影院在线免费观看| 欧美三级欧美一级| 26uuu精品一区二区三区四区在线| 亚洲国产精品av| 亚洲一区二区三区中文字幕| 三级久久三级久久久| 精品一区二区三区不卡 | 日日欢夜夜爽一区| 国产美女久久久久| kk眼镜猥琐国模调教系列一区二区| 99久久99久久精品国产片果冻 | 91啦中文在线观看| 91精品国产福利| 国产精品每日更新在线播放网址| 亚洲成在线观看| 国产乱对白刺激视频不卡| 91黄色免费版| 精品国产凹凸成av人网站| 亚洲精品视频在线观看网站| 日韩成人午夜精品| 91同城在线观看| 欧美videofree性高清杂交| 亚洲日本电影在线| 国产精品一二三四区| 欧洲视频一区二区| 中文字幕第一区综合| 蜜臀久久99精品久久久画质超高清 | 91麻豆精品久久久久蜜臀| 国产精品乱人伦| 青草国产精品久久久久久| 成人av高清在线| 久久伊人蜜桃av一区二区| 亚洲国产欧美在线| 日韩**一区毛片| kk眼镜猥琐国模调教系列一区二区| 欧美一区二区三区影视| 亚洲免费看黄网站| 风间由美中文字幕在线看视频国产欧美 | 老司机午夜精品99久久| 91黄色激情网站| 中文字幕在线观看一区| 久久99久久久欧美国产| 欧美日韩在线直播| 一区二区三区四区亚洲| 国产福利一区二区| 欧美va亚洲va国产综合| 日韩中文字幕亚洲一区二区va在线| 91一区二区在线| 中文字幕一区二区5566日韩| 国产寡妇亲子伦一区二区| 欧美一区午夜视频在线观看 | 国产精品系列在线播放| 欧美日本精品一区二区三区| 一区二区三区毛片| 亚洲一区二区精品3399| 懂色av中文一区二区三区| 91.成人天堂一区| 一区二区三区成人| 91色乱码一区二区三区| 中文字幕在线不卡一区| 成a人片国产精品| 中文字幕日韩欧美一区二区三区| 粉嫩13p一区二区三区| 国产女主播一区| 丁香婷婷综合色啪| 亚洲欧洲日产国码二区|