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

📄 validat3.cpp

📁 lots Elliptic curve cryptography codes. Use Visual c++ to compile
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"	};	HashTestTuple testSet[] = 	{		HashTestTuple("Hi There", "\x92\x94\x72\x7a\x36\x38\xbb\x1c\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d"),		HashTestTuple("what do ya want for nothing?", "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7\x38"),		HashTestTuple("\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD",			"\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6"),		HashTestTuple("Test Using Larger Than Block-Size Key - Hash Key First", "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f\x0b\x62\xe6\xce\x61\xb9\xd0\xcd")	};	bool pass=true;	cout << "\nHMAC/MD5 validation suite running...\n";	for (int k=0; k<4; k++)	{		HMAC_MD5 mac((byte *)keys[k], strlen(keys[k]));		cout << "\nKEY: ";		for (int j=0; keys[k][j] != 0; j++)			cout << setw(2) << setfill('0') << hex << (int)(byte)keys[k][j];		cout << endl;		pass = HashModuleTest(mac, testSet+k, 1) && pass;	}	return pass;}#ifdef CRYPTOPP_REMOVEDbool ValidateXMACC(){	typedef XMACC<MD5> XMACC_MD5;	const byte keys[2][XMACC_MD5::KEYLENGTH]={		{0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb},		{0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xfe,0xdc,0xba,0x98}};	const word32 counters[2]={0xccddeeff, 0x76543210};	const char *TestVals[7]={		"",		"a",		"abc",		"message digest",		"abcdefghijklmnopqrstuvwxyz",		"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",		"12345678901234567890123456789012345678901234567890123456789012345678901234567890"};	const byte output[2][7][XMACC_MD5::DIGESTSIZE]={		{{0xcc,0xdd,0xef,0x00,0xfa,0x89,0x54,0x92,0x86,0x32,0xda,0x2a,0x3f,0x29,0xc5,0x52,0xa0,0x0d,0x05,0x13},		{0xcc,0xdd,0xef,0x01,0xae,0xdb,0x8b,0x7b,0x69,0x71,0xc7,0x91,0x71,0x48,0x9d,0x18,0xe7,0xdf,0x9d,0x5a},		{0xcc,0xdd,0xef,0x02,0x5e,0x01,0x2e,0x2e,0x4b,0xc3,0x83,0x62,0xc2,0xf4,0xe6,0x18,0x1c,0x44,0xaf,0xca},		{0xcc,0xdd,0xef,0x03,0x3e,0xa9,0xf1,0xe0,0x97,0x91,0xf8,0xe2,0xbe,0xe0,0xdf,0xf3,0x41,0x03,0xb3,0x5a},		{0xcc,0xdd,0xef,0x04,0x2e,0x6a,0x8d,0xb9,0x72,0xe3,0xce,0x9f,0xf4,0x28,0x45,0xe7,0xbc,0x80,0xa9,0xc7},		{0xcc,0xdd,0xef,0x05,0x1a,0xd5,0x40,0x78,0xfb,0x16,0x37,0xfc,0x7a,0x1d,0xce,0xb4,0x77,0x10,0xb2,0xa0},		{0xcc,0xdd,0xef,0x06,0x13,0x2f,0x11,0x47,0xd7,0x1b,0xb5,0x52,0x36,0x51,0x26,0xb0,0x96,0xd7,0x60,0x81}},		{{0x76,0x54,0x32,0x11,0xe9,0xcb,0x74,0x32,0x07,0x93,0xfe,0x01,0xdd,0x27,0xdb,0xde,0x6b,0x77,0xa4,0x56},		{0x76,0x54,0x32,0x12,0xcd,0x55,0x87,0x5c,0xc0,0x35,0x85,0x99,0x44,0x02,0xa5,0x0b,0x8c,0xe7,0x2c,0x68},		{0x76,0x54,0x32,0x13,0xac,0xfd,0x87,0x50,0xc3,0x8f,0xcd,0x58,0xaa,0xa5,0x7e,0x7a,0x25,0x63,0x26,0xd1},		{0x76,0x54,0x32,0x14,0xe3,0x30,0xf5,0xdd,0x27,0x2b,0x76,0x22,0x7f,0xaa,0x90,0x73,0x6a,0x48,0xdb,0x00},		{0x76,0x54,0x32,0x15,0xfc,0x57,0x00,0x20,0x7c,0x9d,0xf6,0x30,0x6f,0xbd,0x46,0x3e,0xfb,0x8a,0x2c,0x60},		{0x76,0x54,0x32,0x16,0xfb,0x0f,0xd3,0xdf,0x4c,0x4b,0xc3,0x05,0x9d,0x63,0x1e,0xba,0x25,0x2b,0xbe,0x35},		{0x76,0x54,0x32,0x17,0xc6,0xfe,0xe6,0x5f,0xb1,0x35,0x8a,0xf5,0x32,0x7a,0x80,0xbd,0xb8,0x72,0xee,0xae}}};	byte digest[XMACC_MD5::DIGESTSIZE];	bool pass=true, fail;	cout << "\nXMACC/MD5 validation suite running...\n";	for (int k=0; k<2; k++)	{		XMACC_MD5 mac(keys[k], counters[k]);		cout << "\nKEY: ";		for (int j=0;j<XMACC_MD5::KEYLENGTH;j++)			cout << setw(2) << setfill('0') << hex << (int)keys[k][j];		cout << "    COUNTER: 0x" << hex << counters[k] << endl << endl;		for (int i=0;i<7;i++)		{			mac.Update((byte *)TestVals[i], strlen(TestVals[i]));			mac.Final(digest);			fail = memcmp(digest, output[k][i], XMACC_MD5::DIGESTSIZE)				 || !mac.VerifyDigest(output[k][i], (byte *)TestVals[i], strlen(TestVals[i]));			pass = pass && !fail;			cout << (fail ? "FAILED   " : "passed   ");			for (int j=0;j<XMACC_MD5::DIGESTSIZE;j++)				cout << setw(2) << setfill('0') << hex << (int)digest[j];			cout << "   \"" << TestVals[i] << '\"' << endl;		}	}	return pass;}#endifbool ValidateTTMAC(){	const byte key[TTMAC::KEYLENGTH]={		0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,		0xaa,0xbb,0xcc,0xdd,0xee,0xff,0x01,0x23,0x45,0x67};	const char *TestVals[8]={		"",		"a",		"abc",		"message digest",		"abcdefghijklmnopqrstuvwxyz",		"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",		"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",		"12345678901234567890123456789012345678901234567890123456789012345678901234567890"};	const byte output[8][TTMAC::DIGESTSIZE]={		{0x2d,0xec,0x8e,0xd4,0xa0,0xfd,0x71,0x2e,0xd9,0xfb,0xf2,0xab,0x46,0x6e,0xc2,0xdf,0x21,0x21,0x5e,0x4a},		{0x58,0x93,0xe3,0xe6,0xe3,0x06,0x70,0x4d,0xd7,0x7a,0xd6,0xe6,0xed,0x43,0x2c,0xde,0x32,0x1a,0x77,0x56},		{0x70,0xbf,0xd1,0x02,0x97,0x97,0xa5,0xc1,0x6d,0xa5,0xb5,0x57,0xa1,0xf0,0xb2,0x77,0x9b,0x78,0x49,0x7e},		{0x82,0x89,0xf4,0xf1,0x9f,0xfe,0x4f,0x2a,0xf7,0x37,0xde,0x4b,0xd7,0x1c,0x82,0x9d,0x93,0xa9,0x72,0xfa},		{0x21,0x86,0xca,0x09,0xc5,0x53,0x31,0x98,0xb7,0x37,0x1f,0x24,0x52,0x73,0x50,0x4c,0xa9,0x2b,0xae,0x60},		{0x8a,0x7b,0xf7,0x7a,0xef,0x62,0xa2,0x57,0x84,0x97,0xa2,0x7c,0x0d,0x65,0x18,0xa4,0x29,0xe7,0xc1,0x4d},		{0x54,0xba,0xc3,0x92,0xa8,0x86,0x80,0x6d,0x16,0x95,0x56,0xfc,0xbb,0x67,0x89,0xb5,0x4f,0xb3,0x64,0xfb},		{0x0c,0xed,0x2c,0x9f,0x8f,0x0d,0x9d,0x03,0x98,0x1a,0xb5,0xc8,0x18,0x4b,0xac,0x43,0xdd,0x54,0xc4,0x84}};	byte digest[TTMAC::DIGESTSIZE];	bool pass=true, fail;	cout << "\nTwo-Track-MAC validation suite running...\n";	TTMAC mac(key, sizeof(key));	for (int k=0; k<sizeof(TestVals)/sizeof(TestVals[0]); k++)	{		mac.Update((byte *)TestVals[k], strlen(TestVals[k]));		mac.Final(digest);		fail = memcmp(digest, output[k], TTMAC::DIGESTSIZE)			|| !mac.VerifyDigest(output[k], (byte *)TestVals[k], strlen(TestVals[k]));		pass = pass && !fail;		cout << (fail ? "FAILED   " : "passed   ");		for (int j=0;j<TTMAC::DIGESTSIZE;j++)			cout << setw(2) << setfill('0') << hex << (int)digest[j];		cout << "   \"" << TestVals[k] << '\"' << endl;	}	return true;}struct PBKDF_TestTuple{	byte purpose;	unsigned int iterations;	const char *hexPassword, *hexSalt, *hexDerivedKey;};bool TestPBKDF(PasswordBasedKeyDerivationFunction &pbkdf, const PBKDF_TestTuple *testSet, unsigned int testSetSize){	bool pass = true;	for (unsigned int i=0; i<testSetSize; i++)	{		const PBKDF_TestTuple &tuple = testSet[i];		string password, salt, derivedKey;		StringSource(tuple.hexPassword, true, new HexDecoder(new StringSink(password)));		StringSource(tuple.hexSalt, true, new HexDecoder(new StringSink(salt)));		StringSource(tuple.hexDerivedKey, true, new HexDecoder(new StringSink(derivedKey)));		SecByteBlock derived(derivedKey.size());		pbkdf.DeriveKey(derived, derived.size(), tuple.purpose, (byte *)password.data(), password.size(), (byte *)salt.data(), salt.size(), tuple.iterations);		bool fail = memcmp(derived, derivedKey.data(), derived.size()) != 0;		pass = pass && !fail;		HexEncoder enc(new FileSink(cout));		cout << (fail ? "FAILED   " : "passed   ");		enc.Put(tuple.purpose);		cout << " " << tuple.iterations;		cout << " " << tuple.hexPassword << " " << tuple.hexSalt << " ";		enc.Put(derived, derived.size());		cout << endl;	}	return pass;}bool ValidatePBKDF(){	bool pass = true;	{	// from OpenSSL PKCS#12 Program FAQ v1.77, at http://www.drh-consultancy.demon.co.uk/test.txt	PBKDF_TestTuple testSet[] = 	{		{1, 1, "0073006D006500670000", "0A58CF64530D823F", "8AAAE6297B6CB04642AB5B077851284EB7128F1A2A7FBCA3"},		{2, 1, "0073006D006500670000", "0A58CF64530D823F", "79993DFE048D3B76"},		{1, 1, "0073006D006500670000", "642B99AB44FB4B1F", "F3A95FEC48D7711E985CFE67908C5AB79FA3D7C5CAA5D966"},		{2, 1, "0073006D006500670000", "642B99AB44FB4B1F", "C0A38D64A79BEA1D"},		{3, 1, "0073006D006500670000", "3D83C0E4546AC140", "8D967D88F6CAA9D714800AB3D48051D63F73A312"},		{1, 1000, "007100750065006500670000", "05DEC959ACFF72F7", "ED2034E36328830FF09DF1E1A07DD357185DAC0D4F9EB3D4"},		{2, 1000, "007100750065006500670000", "05DEC959ACFF72F7", "11DEDAD7758D4860"},		{1, 1000, "007100750065006500670000", "1682C0FC5B3F7EC5", "483DD6E919D7DE2E8E648BA8F862F3FBFBDC2BCB2C02957F"},		{2, 1000, "007100750065006500670000", "1682C0FC5B3F7EC5", "9D461D1B00355C50"},		{3, 1000, "007100750065006500670000", "263216FCC2FAB31C", "5EC4C7A80DF652294C3925B6489A7AB857C83476"}	};	PKCS12_PBKDF<SHA1> pbkdf;	cout << "\nPKCS #12 PBKDF validation suite running...\n\n";	pass = TestPBKDF(pbkdf, testSet, sizeof(testSet)/sizeof(testSet[0])) && pass;	}	{	// from draft-ietf-smime-password-03.txt, at http://www.imc.org/draft-ietf-smime-password	PBKDF_TestTuple testSet[] = 	{		{0, 5, "70617373776f7264", "1234567878563412", "D1DAA78615F287E6"},		{0, 500, "416C6C206E2D656E746974696573206D75737420636F6D6D756E69636174652077697468206F74686572206E2d656E74697469657320766961206E2D3120656E746974656568656568656573", "1234567878563412","6A8970BF68C92CAEA84A8DF28510858607126380CC47AB2D"}	};	PKCS5_PBKDF2_HMAC<SHA1> pbkdf;	cout << "\nPKCS #5 PBKDF2 validation suite running...\n\n";	pass = TestPBKDF(pbkdf, testSet, sizeof(testSet)/sizeof(testSet[0])) && pass;	}	return pass;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -