⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 lots Elliptic curve cryptography codes. Use Visual c++ to compile
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{	FileSource privFile(privFilename, true, new HexDecoder);	RSASS<PKCS1v15, SHA>::Signer priv(privFile);	FileSource f(messageFilename, true, new SignerFilter(GlobalRNG(), priv, new HexEncoder(new FileSink(signatureFilename))));}bool RSAVerifyFile(const char *pubFilename, const char *messageFilename, const char *signatureFilename){	FileSource pubFile(pubFilename, true, new HexDecoder);	RSASS<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){	SHA1 sha;	RIPEMD160 ripemd;	SHA256 sha256;	Tiger tiger;	SHA512 sha512;	Whirlpool whirlpool;	vector_member_ptrs<HashFilter> filters(6);	filters[0].reset(new HashFilter(sha));	filters[1].reset(new HashFilter(ripemd));	filters[2].reset(new HashFilter(tiger));	filters[3].reset(new HashFilter(sha256));	filters[4].reset(new HashFilter(sha512));	filters[5].reset(new HashFilter(whirlpool));	auto_ptr<ChannelSwitch> channelSwitch(new ChannelSwitch);	size_t i;	for (i=0; i<filters.size(); i++)		channelSwitch->AddDefaultRoute(*filters[i]);	FileSource(filename, true, channelSwitch.release());	HexEncoder encoder(new FileSink(cout), false);	for (i=0; i<filters.size(); i++)	{		cout << filters[i]->AlgorithmName() << ": ";		filters[i]->TransferTo(encoder);		cout << "\n";	}}void HmacFile(const char *hexKey, const char *file){	member_ptr<MessageAuthenticationCode> mac;	if (strcmp(hexKey, "selftest") == 0)	{		cerr << "Computing HMAC/SHA1 value for self test.\n";		mac.reset(NewIntegrityCheckingMAC());	}	else	{		std::string decodedKey;		StringSource(hexKey, true, new HexDecoder(new StringSink(decodedKey)));		mac.reset(new HMAC<SHA1>((const byte *)decodedKey.data(), decodedKey.size()));	}	FileSource(file, true, new HashFilter(*mac, new HexEncoder(new FileSink(cout))));}void AES_CTR_Encrypt(const char *hexKey, const char *hexIV, const char *infile, const char *outfile){	SecByteBlock key = HexDecodeString(hexKey);	SecByteBlock iv = HexDecodeString(hexIV);	CTR_Mode<AES>::Encryption aes(key, key.size(), iv);	FileSource(infile, true, new StreamTransformationFilter(aes, new FileSink(outfile)));}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.IncorporateEntropy((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 (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], DEFAULT_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);	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 (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], DEFAULT_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);	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);	setsockopt(sockListen, IPPROTO_TCP, TCP_NODELAY, "\x01", 1);	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, CallStack("ForwardTcpPort - out", NULL));		in.GetWaitObjects(waitObjects, CallStack("ForwardTcpPort - in", NULL));		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 *seedInput){	bool result;	std::string seed = seedInput ? std::string(seedInput) : IntToString(time(NULL));	seed.resize(16);	cout << "Using seed: " << seed << endl << endl;	s_globalRNG.SetKeyWithIV((byte *)seed.data(), 16, (byte *)seed.data());	switch (alg)	{	case 0: result = ValidateAll(thorough); break;	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;	case 59: result = ValidateBaseCode(); break;	case 60: result = ValidateSHACAL2(); break;	case 61: result = ValidateCamellia(); break;	case 62: result = ValidateWhirlpool(); break;	case 63: result = ValidateTTMAC(); break;	case 64: result = ValidateSalsa(); break;	case 65: result = ValidateSosemanuk(); break;	case 66: result = ValidateVMAC(); break;	case 67: result = ValidateCCM(); break;	case 68: result = ValidateGCM(); break;	case 69: result = ValidateCMAC(); break;	default: return false;	}	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 + -