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

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

?? shark.cpp

?? 300個加解密的集合程序
?? CPP
字號:
// shark.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"
#include "shark.h"

#ifdef WORD64_AVAILABLE

#include "modes.h"
#include "gf256.h"

NAMESPACE_BEGIN(CryptoPP)

static word64 SHARKTransform(word64 a)
{
	static const byte iG[8][8] = {
		0xe7, 0x30, 0x90, 0x85, 0xd0, 0x4b, 0x91, 0x41, 
		0x53, 0x95, 0x9b, 0xa5, 0x96, 0xbc, 0xa1, 0x68, 
		0x02, 0x45, 0xf7, 0x65, 0x5c, 0x1f, 0xb6, 0x52, 
		0xa2, 0xca, 0x22, 0x94, 0x44, 0x63, 0x2a, 0xa2, 
		0xfc, 0x67, 0x8e, 0x10, 0x29, 0x75, 0x85, 0x71, 
		0x24, 0x45, 0xa2, 0xcf, 0x2f, 0x22, 0xc1, 0x0e, 
		0xa1, 0xf1, 0x71, 0x40, 0x91, 0x27, 0x18, 0xa5, 
		0x56, 0xf4, 0xaf, 0x32, 0xd2, 0xa4, 0xdc, 0x71, 
	};

	word64 result=0;
	GF256 gf256(0xf5);
	for (unsigned int i=0; i<8; i++)
		for(unsigned int j=0; j<8; j++) 
			result ^= word64(gf256.Multiply(iG[i][j], a>>(56-8*j))) << (56-8*i);
	return result;
}

void SHARKBase::InitEncryptionRoundKeys(const byte *key, unsigned int keyLen, unsigned int rounds, word64 *roundkeys)
{
	// concatenate key enought times to fill a
	for (unsigned int i=0; i<(rounds+1)*8; i++)
		((byte *)roundkeys)[i] = key[i%keyLen];

	SHARKEncryption e;
	byte IV[8] = {0,0,0,0,0,0,0,0};
	CFBEncryption cfb(e, IV);

	cfb.ProcessString((byte *)roundkeys, (rounds+1)*8);

#ifdef IS_LITTLE_ENDIAN
	byteReverse(roundkeys, roundkeys, (rounds+1)*8);
#endif

	roundkeys[rounds] = SHARKTransform(roundkeys[rounds]);
}

// construct an SHARKEncryption object with fixed round keys, to be used to initialize actual round keys
SHARKEncryption::SHARKEncryption()
	: SHARKBase(ROUNDS)
{
	for (unsigned int i=0; i<ROUNDS; i++)
		roundkeys[i] = cbox[0][i];

	roundkeys[ROUNDS] = SHARKTransform(cbox[0][ROUNDS]);

#ifdef IS_LITTLE_ENDIAN
	roundkeys[0] = byteReverse(roundkeys[0]);
	roundkeys[ROUNDS] = byteReverse(roundkeys[ROUNDS]);
#endif
}

SHARKEncryption::SHARKEncryption(const byte *key, unsigned int keyLen, unsigned int rounds)
	: SHARKBase(rounds)
{
	InitEncryptionRoundKeys(key, keyLen, rounds, roundkeys);

#ifdef IS_LITTLE_ENDIAN
	roundkeys[0] = byteReverse(roundkeys[0]);
	roundkeys[rounds] = byteReverse(roundkeys[rounds]);
#endif
}

void SHARKEncryption::ProcessBlock(const byte *in, byte *out) const
{
	word64 tmp = *(word64 *)in ^ roundkeys[0];

#ifdef IS_LITTLE_ENDIAN
	tmp = cbox[0][GETBYTE(tmp, 0)] ^ cbox[1][GETBYTE(tmp, 1)] 
		^ cbox[2][GETBYTE(tmp, 2)] ^ cbox[3][GETBYTE(tmp, 3)] 
		^ cbox[4][GETBYTE(tmp, 4)] ^ cbox[5][GETBYTE(tmp, 5)] 
		^ cbox[6][GETBYTE(tmp, 6)] ^ cbox[7][GETBYTE(tmp, 7)]
		^ roundkeys[1];
#else
	tmp = cbox[0][GETBYTE(tmp, 7)] ^ cbox[1][GETBYTE(tmp, 6)] 
		^ cbox[2][GETBYTE(tmp, 5)] ^ cbox[3][GETBYTE(tmp, 4)] 
		^ cbox[4][GETBYTE(tmp, 3)] ^ cbox[5][GETBYTE(tmp, 2)] 
		^ cbox[6][GETBYTE(tmp, 1)] ^ cbox[7][GETBYTE(tmp, 0)]
		^ roundkeys[1];
#endif

	for(unsigned int i=2; i<rounds; i++) 
	{
		tmp = cbox[0][GETBYTE(tmp, 7)] ^ cbox[1][GETBYTE(tmp, 6)] 
			^ cbox[2][GETBYTE(tmp, 5)] ^ cbox[3][GETBYTE(tmp, 4)] 
			^ cbox[4][GETBYTE(tmp, 3)] ^ cbox[5][GETBYTE(tmp, 2)] 
			^ cbox[6][GETBYTE(tmp, 1)] ^ cbox[7][GETBYTE(tmp, 0)]
			^ roundkeys[i];
	}

	out[0] = sbox[GETBYTE(tmp, 7)];
	out[1] = sbox[GETBYTE(tmp, 6)];
	out[2] = sbox[GETBYTE(tmp, 5)];
	out[3] = sbox[GETBYTE(tmp, 4)];
	out[4] = sbox[GETBYTE(tmp, 3)];
	out[5] = sbox[GETBYTE(tmp, 2)];
	out[6] = sbox[GETBYTE(tmp, 1)];
	out[7] = sbox[GETBYTE(tmp, 0)];

	*(word64 *)out ^= roundkeys[rounds];
}

SHARKDecryption::SHARKDecryption(const byte *key, unsigned int keyLen, unsigned int rounds)
	: SHARKBase(rounds)
{
	InitEncryptionRoundKeys(key, keyLen, rounds, roundkeys);

	unsigned int i;

	// transform encryption round keys into decryption round keys
	for (i=0; i<rounds/2; i++)
		std::swap(roundkeys[i], roundkeys[rounds-i]);

	for (i=1; i<rounds; i++)
		roundkeys[i] = SHARKTransform(roundkeys[i]);

#ifdef IS_LITTLE_ENDIAN
	roundkeys[0] = byteReverse(roundkeys[0]);
	roundkeys[rounds] = byteReverse(roundkeys[rounds]);
#endif
}

void SHARKDecryption::ProcessBlock(const byte *in, byte *out) const
{
	word64 tmp = *(word64 *)in ^ roundkeys[0];

#ifdef IS_LITTLE_ENDIAN
	tmp = cbox[0][GETBYTE(tmp, 0)] ^ cbox[1][GETBYTE(tmp, 1)] 
		^ cbox[2][GETBYTE(tmp, 2)] ^ cbox[3][GETBYTE(tmp, 3)] 
		^ cbox[4][GETBYTE(tmp, 4)] ^ cbox[5][GETBYTE(tmp, 5)] 
		^ cbox[6][GETBYTE(tmp, 6)] ^ cbox[7][GETBYTE(tmp, 7)]
		^ roundkeys[1];
#else
	tmp = cbox[0][GETBYTE(tmp, 7)] ^ cbox[1][GETBYTE(tmp, 6)] 
		^ cbox[2][GETBYTE(tmp, 5)] ^ cbox[3][GETBYTE(tmp, 4)] 
		^ cbox[4][GETBYTE(tmp, 3)] ^ cbox[5][GETBYTE(tmp, 2)] 
		^ cbox[6][GETBYTE(tmp, 1)] ^ cbox[7][GETBYTE(tmp, 0)]
		^ roundkeys[1];
#endif

	for(unsigned int i=2; i<rounds; i++) 
	{
		tmp = cbox[0][GETBYTE(tmp, 7)] ^ cbox[1][GETBYTE(tmp, 6)] 
			^ cbox[2][GETBYTE(tmp, 5)] ^ cbox[3][GETBYTE(tmp, 4)] 
			^ cbox[4][GETBYTE(tmp, 3)] ^ cbox[5][GETBYTE(tmp, 2)] 
			^ cbox[6][GETBYTE(tmp, 1)] ^ cbox[7][GETBYTE(tmp, 0)]
			^ roundkeys[i];
	}

	out[0] = sbox[GETBYTE(tmp, 7)];
	out[1] = sbox[GETBYTE(tmp, 6)];
	out[2] = sbox[GETBYTE(tmp, 5)];
	out[3] = sbox[GETBYTE(tmp, 4)];
	out[4] = sbox[GETBYTE(tmp, 3)];
	out[5] = sbox[GETBYTE(tmp, 2)];
	out[6] = sbox[GETBYTE(tmp, 1)];
	out[7] = sbox[GETBYTE(tmp, 0)];

	*(word64 *)out ^= roundkeys[rounds];
}

NAMESPACE_END

#endif // WORD64_AVAILABLE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲永久精品国产| 青椒成人免费视频| 日本午夜一区二区| 国产电影精品久久禁18| 欧美日韩专区在线| 国产日韩欧美亚洲| 精品一区二区三区的国产在线播放 | 日韩精品自拍偷拍| 亚洲区小说区图片区qvod| 精品亚洲免费视频| 欧美精品丝袜久久久中文字幕| 国产精品私人影院| 狂野欧美性猛交blacked| 欧美主播一区二区三区美女| 久久精品网站免费观看| 日本亚洲视频在线| 欧美美女喷水视频| 亚洲一区中文日韩| 91免费版在线看| 国产精品视频免费看| 国产一区二区精品久久| 日韩亚洲欧美成人一区| 日韩国产欧美三级| 777xxx欧美| 日本最新不卡在线| 这里只有精品电影| 日韩黄色一级片| 在线播放国产精品二区一二区四区| 亚洲免费电影在线| 在线观看一区不卡| 亚洲一区二区美女| 欧美性猛交xxxxxxxx| 亚洲成年人网站在线观看| 在线观看日韩精品| 亚洲第一综合色| 欧美日韩国产首页| 美女视频一区二区| wwwwww.欧美系列| 国产精品一区二区你懂的| 国产丝袜美腿一区二区三区| 国产美女精品一区二区三区| 欧美激情自拍偷拍| 色综合久久88色综合天天6| 亚洲精品一卡二卡| 欧美男同性恋视频网站| 日韩精品视频网站| 日韩精品一区二区在线| 国产九色精品成人porny| 国产精品免费观看视频| 色av一区二区| 在线观看视频欧美| 在线播放/欧美激情| 国产精品免费av| 欧美日本韩国一区| 美女脱光内衣内裤视频久久影院| 日韩欧美一卡二卡| 成人性生交大片免费看在线播放| 国产精品国产精品国产专区不片| 99久久精品国产网站| 亚洲v精品v日韩v欧美v专区| 精品嫩草影院久久| 成人久久视频在线观看| 午夜精品福利久久久| 久久影院电视剧免费观看| 91美女精品福利| 看电视剧不卡顿的网站| 综合久久给合久久狠狠狠97色 | 亚洲欧洲日产国码二区| 在线一区二区三区四区五区| 热久久一区二区| 中文字幕一区二| 777奇米成人网| 成人蜜臀av电影| 日韩精品欧美精品| 国产精品久久三| 欧美一区二区视频在线观看2020| 国产成人av资源| 日韩电影一区二区三区| 最新国产成人在线观看| 欧美xingq一区二区| 91猫先生在线| 粉嫩13p一区二区三区| 性欧美疯狂xxxxbbbb| 欧美韩国日本不卡| 日韩手机在线导航| 欧美手机在线视频| hitomi一区二区三区精品| 麻豆国产91在线播放| 亚洲曰韩产成在线| 欧美国产精品中文字幕| 日韩欧美一级二级三级久久久| 色婷婷久久久亚洲一区二区三区 | 亚洲最大的成人av| 国产农村妇女精品| 精品国产人成亚洲区| 欧美剧情片在线观看| 91麻豆视频网站| 成人免费毛片片v| 国产在线视频一区二区三区| 日韩激情视频网站| 五月婷婷综合网| 亚洲综合久久久| 成人免费在线视频观看| 欧美国产欧美综合| 久久久久久久久久久久久女国产乱 | 亚洲久本草在线中文字幕| 久久久国产一区二区三区四区小说| 欧美美女bb生活片| 欧美日韩亚洲国产综合| 欧美亚洲一区二区在线| 色哟哟欧美精品| 欧洲一区二区三区在线| 在线观看日韩一区| 欧美视频一区二区三区在线观看 | 欧美日韩国产一级片| 在线欧美小视频| 欧美天堂一区二区三区| 欧美色中文字幕| 欧美精品丝袜中出| 中文字幕一区二区三区不卡| 国产日韩欧美精品在线| 中文字幕的久久| 亚洲人123区| 亚洲综合色噜噜狠狠| 亚洲一区二区三区视频在线播放| 亚洲成人av一区二区| 蜜臀av在线播放一区二区三区| 青娱乐精品视频在线| 国产麻豆精品theporn| 成人精品视频一区| 日本精品免费观看高清观看| 欧美日韩精品一区视频| 日韩欧美国产一区二区三区 | 精品视频全国免费看| 欧美理论片在线| 精品国产乱码久久久久久影片| www国产精品av| 亚洲视频网在线直播| 亚洲成人一区二区在线观看| 人人狠狠综合久久亚洲| 国产精品一卡二卡| 91亚洲国产成人精品一区二区三| 欧美色窝79yyyycom| 欧美一级片在线观看| 国产三级精品三级在线专区| 亚洲黄色在线视频| 免费久久99精品国产| 成人夜色视频网站在线观看| 在线观看成人小视频| 日韩免费性生活视频播放| 国产精品国产三级国产a| 天堂精品中文字幕在线| 国产激情一区二区三区四区 | 日本美女一区二区| 成人精品一区二区三区四区| 欧美四级电影网| 久久精品人人爽人人爽| 亚洲制服欧美中文字幕中文字幕| 看国产成人h片视频| 99久免费精品视频在线观看| 欧美一区二区三区四区在线观看| 国产精品女同互慰在线看| 天涯成人国产亚洲精品一区av| 国产91丝袜在线播放九色| 精品视频在线免费观看| 日本一区二区高清| 蜜臀av性久久久久av蜜臀妖精| 99精品1区2区| 久久久久久久综合日本| 日日噜噜夜夜狠狠视频欧美人| 成人av在线资源网站| 精品日韩在线观看| 五月天亚洲婷婷| 91蜜桃传媒精品久久久一区二区| 欧美mv和日韩mv国产网站| 亚洲高清视频的网址| 成人av午夜影院| 国产丝袜在线精品| 久久国产欧美日韩精品| 欧美精品在线视频| 亚洲精品国产高清久久伦理二区| 国产精品77777竹菊影视小说| 7777精品伊人久久久大香线蕉经典版下载 | 久久久久久久久久久黄色| 蜜臀久久久久久久| 欧美乱妇23p| 亚洲一级电影视频| 色8久久精品久久久久久蜜| 国产精品国模大尺度视频| 国产大陆亚洲精品国产| 精品国产自在久精品国产| 日韩av中文在线观看| 欧美电影影音先锋| 午夜精品爽啪视频| 欧美伦理影视网| 日日夜夜免费精品视频| 欧美日韩成人一区二区| 亚洲成人一二三| 欧美日本一区二区三区| 天天影视网天天综合色在线播放|