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

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

?? test.cpp

?? 此文件是實現加解密算法的函數庫
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		abort();
	}
	catch (InvalidArgument &e)
	{
		cout << "9. Caught expected exception when using invalid key length. Exception message follows: ";
		cout << e.what() << endl;
	}

	cout << "\nFIPS 140-2 Sample Application completed normally.\n";
}

void FIPS140_GenerateRandomFiles()
{
#ifdef OS_RNG_AVAILABLE
	AutoSeededX917RNG<DES_EDE3> rng;
	RandomNumberStore store(rng, ULONG_MAX);

	for (unsigned int i=0; i<100000; i++)
		store.TransferTo(FileSink((IntToString(i) + ".rnd").c_str()).Ref(), 20000);
#else
	cout << "OS provided RNG not available.\n";
	exit(-1);
#endif
}

RandomPool & GlobalRNG()
{
	static RandomPool randomPool;
	return randomPool;
}

void GenerateRSAKey(unsigned int keyLength, const char *privFilename, const char *pubFilename, const char *seed)
{
	RandomPool randPool;
	randPool.Put((byte *)seed, strlen(seed));

	RSAES_OAEP_SHA_Decryptor priv(randPool, keyLength);
	HexEncoder privFile(new FileSink(privFilename));
	priv.DEREncode(privFile);
	privFile.MessageEnd();

	RSAES_OAEP_SHA_Encryptor pub(priv);
	HexEncoder pubFile(new FileSink(pubFilename));
	pub.DEREncode(pubFile);
	pubFile.MessageEnd();
}

string RSAEncryptString(const char *pubFilename, const char *seed, const char *message)
{
	FileSource pubFile(pubFilename, true, new HexDecoder);
	RSAES_OAEP_SHA_Encryptor pub(pubFile);

	RandomPool randPool;
	randPool.Put((byte *)seed, strlen(seed));

	string result;
	StringSource(message, true, new PK_EncryptorFilter(randPool, pub, new HexEncoder(new StringSink(result))));
	return result;
}

string RSADecryptString(const char *privFilename, const char *ciphertext)
{
	FileSource privFile(privFilename, true, new HexDecoder);
	RSAES_OAEP_SHA_Decryptor priv(privFile);

	string result;
	StringSource(ciphertext, true, new HexDecoder(new PK_DecryptorFilter(priv, new StringSink(result))));
	return result;
}

void RSASignFile(const char *privFilename, const char *messageFilename, const char *signatureFilename)
{
	FileSource privFile(privFilename, true, new HexDecoder);
	RSASSA_PKCS1v15_SHA_Signer priv(privFile);
	// RSASSA_PKCS1v15_SHA_Signer ignores the rng. Use a real RNG for other signature schemes!
	FileSource f(messageFilename, true, new SignerFilter(NullRNG(), priv, new HexEncoder(new FileSink(signatureFilename))));
}

bool RSAVerifyFile(const char *pubFilename, const char *messageFilename, const char *signatureFilename)
{
	FileSource pubFile(pubFilename, true, new HexDecoder);
	RSASSA_PKCS1v15_SHA_Verifier pub(pubFile);

	FileSource signatureFile(signatureFilename, true, new HexDecoder);
	if (signatureFile.MaxRetrievable() != pub.SignatureLength())
		return false;
	SecByteBlock signature(pub.SignatureLength());
	signatureFile.Get(signature, signature.size());

	VerifierFilter *verifierFilter = new VerifierFilter(pub);
	verifierFilter->Put(signature, pub.SignatureLength());
	FileSource f(messageFilename, true, verifierFilter);

	return verifierFilter->GetLastResult();
}

void DigestFile(const char *filename)
{
	MD5 md5;
	SHA sha;
	RIPEMD160 ripemd;
	SHA256 sha256;
	HashFilter md5Filter(md5), shaFilter(sha), ripemdFilter(ripemd), sha256Filter(sha256);

	auto_ptr<ChannelSwitch> channelSwitch(new ChannelSwitch);
	channelSwitch->AddDefaultRoute(md5Filter);
	channelSwitch->AddDefaultRoute(shaFilter);
	channelSwitch->AddDefaultRoute(ripemdFilter);
	channelSwitch->AddDefaultRoute(sha256Filter);
	FileSource(filename, true, channelSwitch.release());

	HexEncoder encoder(new FileSink(cout), false);
	cout << "\nMD5: ";
	md5Filter.TransferTo(encoder);
	cout << "\nSHA-1: ";
	shaFilter.TransferTo(encoder);
	cout << "\nRIPEMD-160: ";
	ripemdFilter.TransferTo(encoder);
	cout << "\nSHA-256: ";
	sha256Filter.TransferTo(encoder);
}

string EncryptString(const char *instr, const char *passPhrase)
{
	string outstr;

	DefaultEncryptorWithMAC encryptor(passPhrase, new HexEncoder(new StringSink(outstr)));
	encryptor.Put((byte *)instr, strlen(instr));
	encryptor.MessageEnd();

	return outstr;
}

string DecryptString(const char *instr, const char *passPhrase)
{
	string outstr;

	HexDecoder decryptor(new DefaultDecryptorWithMAC(passPhrase, new StringSink(outstr)));
	decryptor.Put((byte *)instr, strlen(instr));
	decryptor.MessageEnd();

	return outstr;
}

void EncryptFile(const char *in, const char *out, const char *passPhrase)
{
	FileSource f(in, true, new DefaultEncryptorWithMAC(passPhrase, new FileSink(out)));
}

void DecryptFile(const char *in, const char *out, const char *passPhrase)
{
	FileSource f(in, true, new DefaultDecryptorWithMAC(passPhrase, new FileSink(out)));
}

void SecretShareFile(int threshold, int nShares, const char *filename, const char *seed)
{
	assert(nShares<=1000);

	RandomPool rng;
	rng.Put((byte *)seed, strlen(seed));

	ChannelSwitch *channelSwitch;
	FileSource source(filename, false, new SecretSharing(rng, threshold, nShares, channelSwitch = new ChannelSwitch));

	vector_member_ptrs<FileSink> fileSinks(nShares);
	string channel;
	for (unsigned int i=0; i<nShares; i++)
	{
		char extension[5] = ".000";
		extension[1]='0'+byte(i/100);
		extension[2]='0'+byte((i/10)%10);
		extension[3]='0'+byte(i%10);
		fileSinks[i].reset(new FileSink((string(filename)+extension).c_str()));

		channel = WordToString<word32>(i);
		fileSinks[i]->Put((byte *)channel.data(), 4);
		channelSwitch->AddRoute(channel, *fileSinks[i], BufferedTransformation::NULL_CHANNEL);
	}

	source.PumpAll();
}

void SecretRecoverFile(int threshold, const char *outFilename, char *const *inFilenames)
{
	assert(threshold<=1000);

	SecretRecovery recovery(threshold, new FileSink(outFilename));

	vector_member_ptrs<FileSource> fileSources(threshold);
	SecByteBlock channel(4);
	unsigned int i;
	for (i=0; i<threshold; i++)
	{
		fileSources[i].reset(new FileSource(inFilenames[i], false));
		fileSources[i]->Pump(4);
		fileSources[i]->Get(channel, 4);
		fileSources[i]->Attach(new ChannelSwitch(recovery, string((char *)channel.begin(), 4)));
	}

	while (fileSources[0]->Pump(256))
		for (i=1; i<threshold; i++)
			fileSources[i]->Pump(256);

	for (i=0; i<threshold; i++)
		fileSources[i]->PumpAll();
}

void InformationDisperseFile(int threshold, int nShares, const char *filename)
{
	assert(nShares<=1000);

	ChannelSwitch *channelSwitch;
	FileSource source(filename, false, new InformationDispersal(threshold, nShares, channelSwitch = new ChannelSwitch));

	vector_member_ptrs<FileSink> fileSinks(nShares);
	string channel;
	for (unsigned int i=0; i<nShares; i++)
	{
		char extension[5] = ".000";
		extension[1]='0'+byte(i/100);
		extension[2]='0'+byte((i/10)%10);
		extension[3]='0'+byte(i%10);
		fileSinks[i].reset(new FileSink((string(filename)+extension).c_str()));

		channel = WordToString<word32>(i);
		fileSinks[i]->Put((byte *)channel.data(), 4);
		channelSwitch->AddRoute(channel, *fileSinks[i], BufferedTransformation::NULL_CHANNEL);
	}

	source.PumpAll();
}

void InformationRecoverFile(int threshold, const char *outFilename, char *const *inFilenames)
{
	assert(threshold<=1000);

	InformationRecovery recovery(threshold, new FileSink(outFilename));

	vector_member_ptrs<FileSource> fileSources(threshold);
	SecByteBlock channel(4);
	unsigned int i;
	for (i=0; i<threshold; i++)
	{
		fileSources[i].reset(new FileSource(inFilenames[i], false));
		fileSources[i]->Pump(4);
		fileSources[i]->Get(channel, 4);
		fileSources[i]->Attach(new ChannelSwitch(recovery, string((char *)channel.begin(), 4)));
	}

	while (fileSources[0]->Pump(256))
		for (i=1; i<threshold; i++)
			fileSources[i]->Pump(256);

	for (i=0; i<threshold; i++)
		fileSources[i]->PumpAll();
}

void GzipFile(const char *in, const char *out, int deflate_level)
{
//	FileSource(in, true, new Gzip(new FileSink(out), deflate_level));

	// use a filter graph to compare decompressed data with original
	//
	// Source ----> Gzip ------> Sink
	//    \           |
	//	    \       Gunzip
	//		  \       |
	//		    \     v
	//		      > ComparisonFilter 
			   
	EqualityComparisonFilter comparison;

	Gunzip gunzip(new ChannelSwitch(comparison, "0"));
	gunzip.SetAutoSignalPropagation(0);

	FileSink sink(out);

	ChannelSwitch *cs;
	Gzip gzip(cs = new ChannelSwitch(sink), deflate_level);
	cs->AddDefaultRoute(gunzip);

	cs = new ChannelSwitch(gzip);
	cs->AddDefaultRoute(comparison, "1");
	FileSource source(in, true, cs);

	comparison.ChannelMessageSeriesEnd("0");
	comparison.ChannelMessageSeriesEnd("1");
}

void GunzipFile(const char *in, const char *out)
{
	FileSource(in, true, new Gunzip(new FileSink(out)));
}

void Base64Encode(const char *in, const char *out)
{
	FileSource(in, true, new Base64Encoder(new FileSink(out)));
}

void Base64Decode(const char *in, const char *out)
{
	FileSource(in, true, new Base64Decoder(new FileSink(out)));
}

void HexEncode(const char *in, const char *out)
{
	FileSource(in, true, new HexEncoder(new FileSink(out)));
}

void HexDecode(const char *in, const char *out)
{
	FileSource(in, true, new HexDecoder(new FileSink(out)));
}

void ForwardTcpPort(const char *sourcePortName, const char *destinationHost, const char *destinationPortName)
{
#ifdef SOCKETS_AVAILABLE
	SocketsInitializer sockInit;

	Socket sockListen, sockSource, sockDestination;

	int sourcePort = Socket::PortNameToNumber(sourcePortName);
	int destinationPort = Socket::PortNameToNumber(destinationPortName);

	sockListen.Create();
	sockListen.Bind(sourcePort);

	cout << "Listing on port " << sourcePort << ".\n";
	sockListen.Listen();

	sockListen.Accept(sockSource);
	cout << "Connection accepted on port " << sourcePort << ".\n";
	sockListen.CloseSocket();

	cout << "Making connection to " << destinationHost << ", port " << destinationPort << ".\n";
	sockDestination.Create();
	sockDestination.Connect(destinationHost, destinationPort);

	cout << "Connection made to " << destinationHost << ", starting to forward.\n";

	SocketSource out(sockSource, false, new SocketSink(sockDestination));
	SocketSource in(sockDestination, false, new SocketSink(sockSource));

	WaitObjectContainer waitObjects;

	while (!(in.SourceExhausted() && out.SourceExhausted()))
	{
		waitObjects.Clear();

		out.GetWaitObjects(waitObjects);
		in.GetWaitObjects(waitObjects);

		waitObjects.Wait(INFINITE_TIME);

		if (!out.SourceExhausted())
		{
			cout << "o" << flush;
			out.PumpAll2(false);
			if (out.SourceExhausted())
				cout << "EOF received on source socket.\n";
		}

		if (!in.SourceExhausted())
		{
			cout << "i" << flush;
			in.PumpAll2(false);
			if (in.SourceExhausted())
				cout << "EOF received on destination socket.\n";
		}
	}
#else
	cout << "Socket support was not enabled at compile time.\n";
	exit(-1);
#endif
}

bool Validate(int alg, bool thorough, const char *seed)
{
	bool result;

	std::string timeSeed;
	if (!seed)
	{
		timeSeed = IntToString(time(NULL));
		seed = timeSeed.c_str();
	}

	cout << "Using seed: " << seed << endl << endl;
	GlobalRNG().Put((const byte *)seed, strlen(seed));

	switch (alg)
	{
	case 1: result = TestSettings(); break;
	case 2: result = TestOS_RNG(); break;
	case 3: result = ValidateMD5(); break;
	case 4: result = ValidateSHA(); break;
	case 5: result = ValidateDES(); break;
	case 6: result = ValidateIDEA(); break;
	case 7: result = ValidateARC4(); break;
	case 8: result = ValidateRC5(); break;
	case 9: result = ValidateBlowfish(); break;
	case 10: result = ValidateDiamond2(); break;
	case 11: result = ValidateThreeWay(); break;
	case 12: result = ValidateBBS(); break;
	case 13: result = ValidateDH(); break;
	case 14: result = ValidateRSA(); break;
	case 15: result = ValidateElGamal(); break;
	case 16: result = ValidateDSA(thorough); break;
	case 17: result = ValidateHAVAL(); break;
	case 18: result = ValidateSAFER(); break;
	case 19: result = ValidateLUC(); break;
	case 20: result = ValidateRabin(); break;
//	case 21: result = ValidateBlumGoldwasser(); break;
	case 22: result = ValidateECP(); break;
	case 23: result = ValidateEC2N(); break;
	case 24: result = ValidateMD5MAC(); break;
	case 25: result = ValidateGOST(); break;
	case 26: result = ValidateTiger(); break;
	case 27: result = ValidateRIPEMD(); break;
	case 28: result = ValidateHMAC(); break;
	case 29: result = ValidateXMACC(); break;
	case 30: result = ValidateSHARK(); break;
	case 32: result = ValidateLUC_DH(); break;
	case 33: result = ValidateLUC_DL(); break;
	case 34: result = ValidateSEAL(); break;
	case 35: result = ValidateCAST(); break;
	case 36: result = ValidateSquare(); break;
	case 37: result = ValidateRC2(); break;
	case 38: result = ValidateRC6(); break;
	case 39: result = ValidateMARS(); break;
	case 40: result = ValidateRW(); break;
	case 41: result = ValidateMD2(); break;
	case 42: result = ValidateNR(); break;
	case 43: result = ValidateMQV(); break;
	case 44: result = ValidateRijndael(); break;
	case 45: result = ValidateTwofish(); break;
	case 46: result = ValidateSerpent(); break;
	case 47: result = ValidateCipherModes(); break;
	case 48: result = ValidateCRC32(); break;
	case 49: result = ValidateECDSA(); break;
	case 50: result = ValidateXTR_DH(); break;
	case 51: result = ValidateSKIPJACK(); break;
	case 52: result = ValidateSHA2(); break;
	case 53: result = ValidatePanama(); break;
	case 54: result = ValidateAdler32(); break;
	case 55: result = ValidateMD4(); break;
	case 56: result = ValidatePBKDF(); break;
	case 57: result = ValidateESIGN(); break;
	case 58: result = ValidateDLIES(); break;
	default: result = ValidateAll(thorough); break;
	}

	time_t endTime = time(NULL);
	cout << "\nTest ended at " << asctime(localtime(&endTime));
	cout << "Seed used was: " << seed << endl;

	return result;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜日韩在线观看| 中文字幕日韩一区二区| 久久精子c满五个校花| 亚洲美女偷拍久久| 日本vs亚洲vs韩国一区三区| 成人免费高清视频在线观看| 91精品国产综合久久精品麻豆| 人禽交欧美网站| 93久久精品日日躁夜夜躁欧美| 欧美日韩国产成人在线91| 亚洲国产精品二十页| 美女诱惑一区二区| 欧美日韩中文一区| 日韩理论在线观看| 国产成人啪免费观看软件| 欧美一区二区三区在线观看| 亚洲精品视频自拍| youjizz国产精品| 久久亚洲二区三区| 奇米色一区二区三区四区| 欧美日韩一区高清| 亚洲制服欧美中文字幕中文字幕| 懂色av一区二区在线播放| 日韩免费电影一区| 青青草97国产精品免费观看无弹窗版| 日本高清不卡视频| 中文字幕一区二区三区在线观看| 国产精品乡下勾搭老头1| 欧美一二区视频| 奇米色777欧美一区二区| 欧美精选午夜久久久乱码6080| 一区二区三区不卡视频在线观看| 成人av免费在线播放| 国产精品三级av| 成人动漫一区二区在线| 国产精品电影院| 91在线视频观看| 国内精品视频一区二区三区八戒| 欧美三级乱人伦电影| 午夜电影一区二区| 欧美理论电影在线| 青青青伊人色综合久久| 精品国产露脸精彩对白| 国产精品中文字幕日韩精品| 久久久久久久精| 成人黄色小视频| 亚洲免费在线观看视频| 欧美亚洲精品一区| 午夜不卡av在线| 日韩色视频在线观看| 久久草av在线| 亚洲国产精品ⅴa在线观看| 99精品国产99久久久久久白柏| 日韩理论片一区二区| 欧美中文字幕亚洲一区二区va在线| 亚洲午夜精品网| 日韩精品一区二区三区在线| 国产在线视频一区二区| 亚洲欧美一区二区在线观看| 在线观看视频91| 久久精品国产一区二区三| 久久综合久久综合亚洲| 91色porny在线视频| 亚洲第一搞黄网站| 精品国产成人系列| 暴力调教一区二区三区| 同产精品九九九| 国产亚洲制服色| 欧美写真视频网站| 国产一区二区调教| 一区二区三区在线免费播放| 日韩一区二区高清| 91在线无精精品入口| 日本成人中文字幕| 最新日韩在线视频| 日韩欧美国产三级| 91亚洲大成网污www| 九一九一国产精品| 亚洲欧洲制服丝袜| www激情久久| 欧美日韩综合在线| 波多野结衣精品在线| 久久精品72免费观看| 日韩一区在线免费观看| 日韩女优毛片在线| 一区二区中文字幕在线| 日韩一区二区三区高清免费看看 | 免费成人结看片| 国产精品国产三级国产aⅴ入口| 91精品国产综合久久久久久久| 成人国产精品免费观看| 九色综合国产一区二区三区| 亚洲国产另类精品专区| 日韩一区中文字幕| 久久综合色鬼综合色| 日韩一区二区影院| 欧美另类一区二区三区| 在线观看网站黄不卡| 国产91在线看| 国产精品一区久久久久| 卡一卡二国产精品 | 不卡的电影网站| 国产一区二区h| 精品亚洲国内自在自线福利| 亚洲不卡在线观看| 亚洲在线成人精品| 亚洲视频在线一区| 中文字幕在线不卡一区| 国产女主播在线一区二区| 久久综合九色综合97_久久久| 91超碰这里只有精品国产| 欧美色综合影院| 色婷婷av一区| 欧美专区亚洲专区| 欧美亚洲国产一区二区三区| 在线看日韩精品电影| 91福利视频久久久久| 一本一道久久a久久精品综合蜜臀| 日韩精品中文字幕在线一区| 欧美日韩成人一区二区| 欧美日韩高清一区二区不卡| 欧美性videosxxxxx| 欧美日韩一区二区三区免费看| 欧美在线播放高清精品| 欧美日本一道本| 91精品久久久久久久91蜜桃| 日韩一级二级三级精品视频| 欧美成人一区二区三区| 欧美精品一区二区三区在线播放 | 精品福利一区二区三区| 欧美精品一区二| 久久九九全国免费| 亚洲欧美一区二区在线观看| 一级特黄大欧美久久久| 日本中文一区二区三区| 精品午夜久久福利影院| 不卡的看片网站| 欧美三级电影网站| xvideos.蜜桃一区二区| 亚洲视频免费在线| 亚洲成年人网站在线观看| 久久97超碰国产精品超碰| 成人性色生活片| 欧美日免费三级在线| 久久久美女毛片| 亚洲精品国产第一综合99久久 | 在线观看欧美精品| 日韩亚洲欧美一区二区三区| 中文字幕第一区综合| 亚洲精品福利视频网站| 老色鬼精品视频在线观看播放| 国产精品91xxx| 91官网在线观看| 久久久久久久久久看片| 一区二区三区免费看视频| 麻豆精品视频在线| 粉嫩aⅴ一区二区三区四区五区| 91免费版在线看| 日韩一区二区在线看| 中国色在线观看另类| 亚洲成a人v欧美综合天堂| 丰满白嫩尤物一区二区| 欧美丰满美乳xxx高潮www| 国产精品萝li| 欧美色精品天天在线观看视频| 精品免费一区二区三区| 亚洲免费观看在线观看| 国产一区二区三区在线观看精品 | 91精品国产色综合久久不卡电影 | 一区二区三区四区在线| 激情另类小说区图片区视频区| 色婷婷av久久久久久久| 欧美激情中文不卡| 另类中文字幕网| 欧美亚洲综合久久| 国产精品免费网站在线观看| 久久精品国产77777蜜臀| 欧美日韩在线免费视频| 亚洲欧洲在线观看av| 国产精选一区二区三区| 欧美一区二区三区视频免费 | 午夜伦欧美伦电影理论片| 成人中文字幕合集| 久久亚洲综合色| 久久国产生活片100| 6080日韩午夜伦伦午夜伦| 亚洲尤物在线视频观看| 99视频精品在线| 国产精品国产精品国产专区不蜜| 国产在线精品免费av| 日韩欧美中文一区二区| 丝袜美腿亚洲色图| 欧美日韩夫妻久久| 亚洲高清中文字幕| 欧美日产国产精品| 五月天亚洲精品| 日韩一区二区三区四区| 日韩和欧美一区二区| 91精品久久久久久久久99蜜臂| 水野朝阳av一区二区三区|