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

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

?? camellia.cpp

?? 當前常用的500多種加密解密算法
?? CPP
字號:
// camellia.cpp - by Kevin Springle, 2003
// This code is hereby placed in the public domain.

#include "pch.h"

#ifdef WORD64_AVAILABLE

#include "camellia.h"
#include "misc.h"

NAMESPACE_BEGIN(CryptoPP)

// Define internal Camellia function macros

inline word64 Camellia::Base::F(word64 X)
{
	word32 t1 = (word32)(X >> 32);
	word32 t2 = (word32)(X & 0xFFFFFFFFL);
	t2=	(s2[GETBYTE(t2, 3)] << 24) |
		(s3[GETBYTE(t2, 2)] << 16) |
		(s4[GETBYTE(t2, 1)] <<	8) |
		(s1[GETBYTE(t2, 0)]);
	t1=	(s1[GETBYTE(t1, 3)] << 24) |
		(s2[GETBYTE(t1, 2)] << 16) |
		(s3[GETBYTE(t1, 1)] <<	8) |
		(s4[GETBYTE(t1, 0)]);
	t1 ^= rotlFixed(t2, 8);
	t2 ^= rotlFixed(t1, 16);
	t1 ^= rotlFixed(t2, 24);
	t2 ^= rotlFixed(t1, 24);
	return ((word64)t2 << 32) | (word64)t1;
}

#define ROUND2(Xp, K1, K2) \
	{ (Xp)[1] ^= F((Xp)[0] ^ K1); (Xp)[0] ^= F((Xp)[1] ^ K2); }

inline void Camellia::Base::FLlayer(word64 *x, word64 K1, word64 K2)
{
	word32 Xl = (word32)(x[0] >> 32);
	word32 Xr = (word32)(x[0] & 0xFFFFFFFFL);
	Xr ^= rotlFixed(Xl & (word32)(K1 >> 32), 1);
	Xl ^= (Xr | (word32)(K1 & 0xFFFFFFFFL));
    x[0] = ((word64)Xl << 32) | (word64)Xr;

	Xl = (word32)(x[1] >> 32);
	Xr = (word32)(x[1] & 0xFFFFFFFFL);
	Xl ^= (Xr | (word32)(K2 & 0xFFFFFFFFL));
	Xr ^= rotlFixed(Xl & (word32)(K2 >> 32), 1);
    x[1] = ((word64)Xl << 32) | (word64)Xr;
}

inline void rotl128(word64 *x, unsigned int bits)
{
	word64 temp = x[0] >> (64 - bits);
	x[0] = (x[0] << bits) | (x[1] >> (64 - bits));
	x[1] = (x[1] << bits) | temp;
}

void Camellia::Base::UncheckedSetKey(CipherDir dir, const byte *key, unsigned int keylen)
{
	AssertValidKeyLength(keylen);

	m_rounds = (keylen >= 24) ? 4 : 3;
	unsigned int kslen = (8 * m_rounds + 2);
	m_key.New(8 * kslen);
	word64 *ks = m_key;

	FixedSizeSecBlock<word64, 32> keyword;
	word64 *kw = keyword;

#define KL	(kw+0)
#define KR	(kw+2)
#define KA	(kw+4)
#define KB	(kw+6)

	if (keylen == 16)
	{
		GetUserKey(BIG_ENDIAN_ORDER, kw, 2, key, keylen);
		KA[0] = KL[0];
		KA[1] = KL[1];
	}
	else
	{
		if (keylen == 24)
		{
			GetUserKey(BIG_ENDIAN_ORDER, kw, 3, key, keylen);
			KR[1] = ~KR[0];
		}
		else
		{
			GetUserKey(BIG_ENDIAN_ORDER, kw, 4, key, keylen);
		}
		KA[0] = KL[0] ^ KR[0];
		KA[1] = KL[1] ^ KR[1];
	}
	ROUND2(KA, W64LIT(0xA09E667F3BCC908B), W64LIT(0xB67AE8584CAA73B2));
	KA[0] ^= KL[0];
	KA[1] ^= KL[1];
	ROUND2(KA, W64LIT(0xC6EF372FE94F82BE), W64LIT(0x54FF53A5F1D36F1C));

	if (keylen == 16)
	{
		ks[0] = KL[0]; ks[1] = KL[1];
		rotl128(KL, 15);
		ks[4] = KL[0]; ks[5] = KL[1];
		rotl128(KL, 30);
		ks[10] = KL[0]; ks[11] = KL[1];
		rotl128(KL, 15);
		ks[13] = KL[1];
		rotl128(KL, 17);
		ks[16] = KL[0]; ks[17] = KL[1];
		rotl128(KL, 17);
		ks[18] = KL[0]; ks[19] = KL[1];
		rotl128(KL, 17);
		ks[22] = KL[0]; ks[23] = KL[1];

		ks[2] = KA[0]; ks[3] = KA[1];
		rotl128(KA, 15);
		ks[6] = KA[0]; ks[7] = KA[1];
		rotl128(KA, 15);
		ks[8] = KA[0]; ks[9] = KA[1];
		rotl128(KA, 15);
		ks[12] = KA[0];
		rotl128(KA, 15);
		ks[14] = KA[0]; ks[15] = KA[1];
		rotl128(KA, 34);
		ks[20] = KA[0]; ks[21] = KA[1];
		rotl128(KA, 17);
		ks[24] = KA[0]; ks[25] = KA[1];
	}
	else
	{
		KB[0] = KA[0] ^ KR[0];
		KB[1] = KA[1] ^ KR[1];
		ROUND2(KB, W64LIT(0x10E527FADE682D1D), W64LIT(0xB05688C2B3E6C1FD));

		ks[0] = KL[0]; ks[1] = KL[1];
		rotl128(KL, 45);
		ks[12] = KL[0]; ks[13] = KL[1];
		rotl128(KL, 15);
		ks[16] = KL[0]; ks[17] = KL[1];
		rotl128(KL, 17);
		ks[22] = KL[0]; ks[23] = KL[1];
		rotl128(KL, 34);
		ks[30] = KL[0]; ks[31] = KL[1];

		rotl128(KR, 15);
		ks[4] = KR[0]; ks[5] = KR[1];
		rotl128(KR, 15);
		ks[8] = KR[0]; ks[9] = KR[1];
		rotl128(KR, 30);
		ks[18] = KR[0]; ks[19] = KR[1];
		rotl128(KR, 34);
		ks[26] = KR[0]; ks[27] = KR[1];

		rotl128(KA, 15);
		ks[6] = KA[0]; ks[7] = KA[1];
		rotl128(KA, 30);
		ks[14] = KA[0]; ks[15] = KA[1];
		rotl128(KA, 32);
		ks[24] = KA[0]; ks[25] = KA[1];
		rotl128(KA, 17);
		ks[28] = KA[0]; ks[29] = KA[1];

		ks[2] = KB[0]; ks[3] = KB[1];
		rotl128(KB, 30);
		ks[10] = KB[0]; ks[11] = KB[1];
		rotl128(KB, 30);
		ks[20] = KB[0]; ks[21] = KB[1];
		rotl128(KB, 51);
		ks[32] = KB[0]; ks[33] = KB[1];
	}

	if (dir == DECRYPTION)	// reverse key schedule order
	{
		std::swap(ks[0], ks[kslen-2]);
		std::swap(ks[1], ks[kslen-1]);
		for (unsigned int i=2; i<kslen/2; i++)
		{
			std::swap(ks[i], ks[kslen-1-i]);
		}
	}
}

typedef BlockGetAndPut<word64, BigEndian> Block;

void Camellia::Base::ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const
{
	FixedSizeSecBlock<word64, 16> mb;
	word64 *m = mb;
	const word64 *ks = m_key;

	Block::Get(inBlock)(m[0])(m[1]);

	m[0] ^= ks[0];
	m[1] ^= ks[1];
	ks += 2;
	for (unsigned int i = m_rounds; i > 0; --i)
	{
		ROUND2(m, ks[0], ks[1]);
		ROUND2(m, ks[2], ks[3]);
		ROUND2(m, ks[4], ks[5]);
		if (i != 1)
		{
			FLlayer(m, ks[6], ks[7]);
			ks += 8;
		}
		else
		{
			m[0] ^= ks[7];
			m[1] ^= ks[6];
		}
	}

	Block::Put(xorBlock, outBlock)(m[1])(m[0]);
}

// The Camellia s-boxes

const byte Camellia::Base::s1[256] =
{
	112,130,44,236,179,39,192,229,228,133,87,53,234,12,174,65,
	35,239,107,147,69,25,165,33,237,14,79,78,29,101,146,189,
	134,184,175,143,124,235,31,206,62,48,220,95,94,197,11,26,
	166,225,57,202,213,71,93,61,217,1,90,214,81,86,108,77,
	139,13,154,102,251,204,176,45,116,18,43,32,240,177,132,153,
	223,76,203,194,52,126,118,5,109,183,169,49,209,23,4,215,
	20,88,58,97,222,27,17,28,50,15,156,22,83,24,242,34,
	254,68,207,178,195,181,122,145,36,8,232,168,96,252,105,80,
	170,208,160,125,161,137,98,151,84,91,30,149,224,255,100,210,
	16,196,0,72,163,247,117,219,138,3,230,218,9,63,221,148,
	135,92,131,2,205,74,144,51,115,103,246,243,157,127,191,226,
	82,155,216,38,200,55,198,59,129,150,111,75,19,190,99,46,
	233,121,167,140,159,110,188,142,41,245,249,182,47,253,180,89,
	120,152,6,106,231,70,113,186,212,37,171,66,136,162,141,250,
	114,7,185,85,248,238,172,10,54,73,42,104,60,56,241,164,
	64,40,211,123,187,201,67,193,21,227,173,244,119,199,128,158
};

const byte Camellia::Base::s2[256] =
{
	224,5,88,217,103,78,129,203,201,11,174,106,213,24,93,130,
	70,223,214,39,138,50,75,66,219,28,158,156,58,202,37,123,
	13,113,95,31,248,215,62,157,124,96,185,190,188,139,22,52,
	77,195,114,149,171,142,186,122,179,2,180,173,162,172,216,154,
	23,26,53,204,247,153,97,90,232,36,86,64,225,99,9,51,
	191,152,151,133,104,252,236,10,218,111,83,98,163,46,8,175,
	40,176,116,194,189,54,34,56,100,30,57,44,166,48,229,68,
	253,136,159,101,135,107,244,35,72,16,209,81,192,249,210,160,
	85,161,65,250,67,19,196,47,168,182,60,43,193,255,200,165,
	32,137,0,144,71,239,234,183,21,6,205,181,18,126,187,41,
	15,184,7,4,155,148,33,102,230,206,237,231,59,254,127,197,
	164,55,177,76,145,110,141,118,3,45,222,150,38,125,198,92,
	211,242,79,25,63,220,121,29,82,235,243,109,94,251,105,178,
	240,49,12,212,207,140,226,117,169,74,87,132,17,69,27,245,
	228,14,115,170,241,221,89,20,108,146,84,208,120,112,227,73,
	128,80,167,246,119,147,134,131,42,199,91,233,238,143,1,61
};

const byte Camellia::Base::s3[256] =
{
	56,65,22,118,217,147,96,242,114,194,171,154,117,6,87,160,
	145,247,181,201,162,140,210,144,246,7,167,39,142,178,73,222,
	67,92,215,199,62,245,143,103,31,24,110,175,47,226,133,13,
	83,240,156,101,234,163,174,158,236,128,45,107,168,43,54,166,
	197,134,77,51,253,102,88,150,58,9,149,16,120,216,66,204,
	239,38,229,97,26,63,59,130,182,219,212,152,232,139,2,235,
	10,44,29,176,111,141,136,14,25,135,78,11,169,12,121,17,
	127,34,231,89,225,218,61,200,18,4,116,84,48,126,180,40,
	85,104,80,190,208,196,49,203,42,173,15,202,112,255,50,105,
	8,98,0,36,209,251,186,237,69,129,115,109,132,159,238,74,
	195,46,193,1,230,37,72,153,185,179,123,249,206,191,223,113,
	41,205,108,19,100,155,99,157,192,75,183,165,137,95,177,23,
	244,188,211,70,207,55,94,71,148,250,252,91,151,254,90,172,
	60,76,3,53,243,35,184,93,106,146,213,33,68,81,198,125,
	57,131,220,170,124,119,86,5,27,164,21,52,30,28,248,82,
	32,20,233,189,221,228,161,224,138,241,214,122,187,227,64,79
};

const byte Camellia::Base::s4[256] =
{
	112,44,179,192,228,87,234,174,35,107,69,165,237,79,29,146,
	134,175,124,31,62,220,94,11,166,57,213,93,217,90,81,108,
	139,154,251,176,116,43,240,132,223,203,52,118,109,169,209,4,
	20,58,222,17,50,156,83,242,254,207,195,122,36,232,96,105,
	170,160,161,98,84,30,224,100,16,0,163,117,138,230,9,221,
	135,131,205,144,115,246,157,191,82,216,200,198,129,111,19,99,
	233,167,159,188,41,249,47,180,120,6,231,113,212,171,136,141,
	114,185,248,172,54,42,60,241,64,211,187,67,21,173,119,128,
	130,236,39,229,133,53,12,65,239,147,25,33,14,78,101,189,
	184,143,235,206,48,95,197,26,225,202,71,61,1,214,86,77,
	13,102,204,45,18,32,177,153,76,194,126,5,183,49,23,215,
	88,97,27,28,15,22,24,34,68,178,181,145,8,168,252,80,
	208,125,137,151,91,149,255,210,196,72,247,219,3,218,63,148,
	92,2,74,51,103,243,127,226,155,38,55,59,150,75,190,46,
	121,140,110,142,245,182,253,89,152,106,70,186,37,66,162,250,
	7,85,238,10,73,104,56,164,40,123,201,193,227,244,199,158
};

NAMESPACE_END

#endif // WORD64_AVAILABLE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av一区二区| 91精品国产91久久久久久最新毛片| 色综合久久天天| 久久久久久免费网| 同产精品九九九| 91麻豆蜜桃一区二区三区| 欧美精品一区二区三| 日韩精品乱码免费| 91成人国产精品| 最近中文字幕一区二区三区| 国产成人综合在线播放| 精品日韩成人av| 奇米影视在线99精品| 欧美精品乱人伦久久久久久| 亚洲三级理论片| 99久久99久久精品免费看蜜桃| 精品sm在线观看| 美脚の诱脚舐め脚责91| 337p亚洲精品色噜噜狠狠| 伊人一区二区三区| 色综合中文字幕| 日韩理论片中文av| 91网站视频在线观看| 亚洲色图欧洲色图婷婷| av在线不卡免费看| 国产精品美女久久久久久久久 | 欧美日韩五月天| 亚洲欧美另类小说| 99国产精品国产精品毛片| 国产精品网站导航| 99精品国产视频| 一区二区三区四区不卡视频| 99久久国产免费看| 一区二区三区欧美亚洲| 在线观看视频91| 污片在线观看一区二区| 欧美精品久久天天躁| 免费一区二区视频| 久久亚洲影视婷婷| av午夜一区麻豆| 亚洲精品乱码久久久久久| 色婷婷久久综合| 日韩高清电影一区| 久久综合99re88久久爱| 国产福利不卡视频| 亚洲乱码日产精品bd| 欧美日韩一区不卡| 狠狠色丁香久久婷婷综| 中文字幕欧美激情| 欧美午夜精品一区| 久久国产人妖系列| 国产精品久久久久久久久免费丝袜 | 欧美日韩国产一区二区三区地区| 亚洲精品成人a在线观看| 欧美日韩中文字幕精品| 免费观看在线综合色| 久久久亚洲精品石原莉奈 | 国产成人av一区二区三区在线| 中文字幕欧美国产| 欧美天堂亚洲电影院在线播放| 亚瑟在线精品视频| 久久久久久亚洲综合影院红桃| a4yy欧美一区二区三区| 偷拍一区二区三区四区| 国产亚洲精品资源在线26u| 97成人超碰视| 日本 国产 欧美色综合| 中文字幕av一区二区三区免费看| 91精彩视频在线观看| 蜜桃视频免费观看一区| 亚洲欧美视频在线观看| 欧美tickling网站挠脚心| 91亚洲国产成人精品一区二三| 奇米一区二区三区| 一区二区三区日韩| 国产日韩精品一区二区三区在线| 欧美中文字幕一区二区三区| 国产一区二区主播在线| 亚洲国产成人av网| 国产精品久久久久久久久免费丝袜| 欧美精品一卡二卡| 色噜噜狠狠成人中文综合| 国内精品视频666| 天天综合天天做天天综合| 国产精品激情偷乱一区二区∴| 在线播放中文一区| 在线观看日韩毛片| www..com久久爱| 国产精品88888| 久久爱另类一区二区小说| 亚洲国产精品影院| 亚洲美女区一区| 中文字幕欧美三区| 国产亚洲精品免费| 精品国产免费人成在线观看| 欧美午夜寂寞影院| 91黄色激情网站| 色婷婷一区二区三区四区| 成人精品视频.| 国产a级毛片一区| 国产一区二区三区av电影| 久久精品免费看| 奇米色一区二区三区四区| 日韩成人伦理电影在线观看| 夜夜嗨av一区二区三区网页| 18成人在线观看| 亚洲免费观看高清在线观看| 亚洲丝袜自拍清纯另类| 亚洲四区在线观看| 有码一区二区三区| 亚洲一区二区三区视频在线| 一区二区三区自拍| 亚洲综合区在线| 亚洲成av人综合在线观看| 久久精品国产亚洲一区二区三区| 午夜精品久久久久久久久久久| 一区二区三区**美女毛片| 夜夜爽夜夜爽精品视频| 亚洲一区电影777| 爽爽淫人综合网网站| 丝袜美腿亚洲色图| 久久国产精品72免费观看| 国产揄拍国内精品对白| 国产精品一线二线三线| 成年人国产精品| 在线一区二区三区做爰视频网站| 欧美亚男人的天堂| 日韩一区二区中文字幕| 26uuu亚洲| 国产精品久99| 午夜精品爽啪视频| 精品在线亚洲视频| 成人黄色a**站在线观看| 在线观看亚洲精品视频| 宅男噜噜噜66一区二区66| 久久久蜜桃精品| 亚洲裸体xxx| 日韩电影免费在线看| 国产毛片精品视频| 99re这里只有精品视频首页| 欧美日韩第一区日日骚| 久久久影视传媒| 亚洲少妇最新在线视频| 三级在线观看一区二区| 国内久久精品视频| 91片黄在线观看| 日韩写真欧美这视频| 欧美国产视频在线| 亚洲高清视频的网址| 国产成人在线观看免费网站| 91国产精品成人| 26uuu精品一区二区| 一区二区三区成人| 国产一区二区精品久久99| 色国产综合视频| 久久伊99综合婷婷久久伊| 亚洲一区在线免费观看| 国产一区在线观看视频| 欧美色图第一页| 国产精品久久久久影视| 蜜桃视频一区二区三区 | 日韩精品一区二区在线| 亚洲欧美另类久久久精品2019| 美女性感视频久久| 色婷婷狠狠综合| 国产视频一区不卡| 日韩精品一二三四| 色婷婷亚洲精品| 国产欧美久久久精品影院| 奇米色一区二区三区四区| 欧美这里有精品| 国产精品二三区| 国产精品一区二区你懂的| 欧美一区二区三区免费大片| 亚洲人一二三区| 波多野结衣亚洲一区| 久久久美女毛片| 美国三级日本三级久久99| 欧美久久久一区| 亚洲午夜三级在线| 91视频一区二区| 成人欧美一区二区三区小说| 国产精品一二三在| 久久久久久久久久久黄色| 麻豆精品国产传媒mv男同| 欧美视频在线观看一区| 亚洲精品一二三| 91一区二区在线观看| 国产精品二三区| 成人午夜电影网站| 日本一区二区三级电影在线观看 | 中文字幕欧美激情一区| 韩国成人在线视频| 欧美大片一区二区三区| 看片的网站亚洲| 精品国产乱码久久久久久久久| 日本欧美在线观看| 日韩欧美视频在线| 麻豆精品精品国产自在97香蕉| 日韩精品一区国产麻豆|