📄 validat3_8cpp-source.html
字号:
<a name="l00384"></a>00384 <span class="keywordtype">bool</span> ValidateWhirlpool()<a name="l00385"></a>00385 {<a name="l00386"></a>00386 cout << <span class="stringliteral">"\nWhirlpool Hash Function validation suite running...\n"</span>;<a name="l00387"></a>00387 <a name="l00388"></a>00388 <span class="preprocessor">#ifdef WORD64_AVAILABLE</span><a name="l00389"></a>00389 <span class="preprocessor"></span> <span class="keywordflow">return</span> RunTestDataFile(<span class="stringliteral">"TestVectors/whrlpool.txt"</span>);<a name="l00390"></a>00390 <span class="preprocessor">#else</span><a name="l00391"></a>00391 <span class="preprocessor"></span> cout << <span class="stringliteral">"word64 not available, skipping Whirlpool validation."</span> << endl;<a name="l00392"></a>00392 <span class="keywordflow">return</span> <span class="keyword">true</span>;<a name="l00393"></a>00393 <span class="preprocessor">#endif</span><a name="l00394"></a>00394 <span class="preprocessor"></span>}<a name="l00395"></a>00395 <a name="l00396"></a>00396 <span class="preprocessor">#ifdef CRYPTOPP_REMOVED</span><a name="l00397"></a>00397 <span class="preprocessor"></span><span class="keywordtype">bool</span> ValidateMD5MAC()<a name="l00398"></a>00398 {<a name="l00399"></a>00399 <span class="keyword">const</span> byte keys[2][MD5MAC::KEYLENGTH]={<a name="l00400"></a>00400 {0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff},<a name="l00401"></a>00401 {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10}};<a name="l00402"></a>00402 <a name="l00403"></a>00403 <span class="keyword">const</span> <span class="keywordtype">char</span> *TestVals[7]={<a name="l00404"></a>00404 <span class="stringliteral">""</span>,<a name="l00405"></a>00405 <span class="stringliteral">"a"</span>,<a name="l00406"></a>00406 <span class="stringliteral">"abc"</span>,<a name="l00407"></a>00407 <span class="stringliteral">"message digest"</span>,<a name="l00408"></a>00408 <span class="stringliteral">"abcdefghijklmnopqrstuvwxyz"</span>,<a name="l00409"></a>00409 <span class="stringliteral">"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"</span>,<a name="l00410"></a>00410 <span class="stringliteral">"12345678901234567890123456789012345678901234567890123456789012345678901234567890"</span>};<a name="l00411"></a>00411 <a name="l00412"></a>00412 <span class="keyword">const</span> byte output[2][7][MD5MAC::DIGESTSIZE]={<a name="l00413"></a>00413 {{0x1f,0x1e,0xf2,0x37,0x5c,0xc0,0xe0,0x84,0x4f,0x98,0xe7,0xe8,0x11,0xa3,0x4d,0xa8},<a name="l00414"></a>00414 {0x7a,0x76,0xee,0x64,0xca,0x71,0xef,0x23,0x7e,0x26,0x29,0xed,0x94,0x52,0x73,0x65},<a name="l00415"></a>00415 {0xe8,0x01,0x3c,0x11,0xf7,0x20,0x9d,0x13,0x28,0xc0,0xca,0xa0,0x4f,0xd0,0x12,0xa6},<a name="l00416"></a>00416 {0xc8,0x95,0x53,0x4f,0x22,0xa1,0x74,0xbc,0x3e,0x6a,0x25,0xa2,0xb2,0xef,0xd6,0x30},<a name="l00417"></a>00417 {0x91,0x72,0x86,0x7e,0xb6,0x00,0x17,0x88,0x4c,0x6f,0xa8,0xcc,0x88,0xeb,0xe7,0xc9},<a name="l00418"></a>00418 {0x3b,0xd0,0xe1,0x1d,0x5e,0x09,0x4c,0xb7,0x1e,0x35,0x44,0xac,0xa9,0xb8,0xbf,0xa2},<a name="l00419"></a>00419 {0x93,0x37,0x16,0x64,0x44,0xcc,0x95,0x35,0xb7,0xd5,0xb8,0x0f,0x91,0xe5,0x29,0xcb}},<a name="l00420"></a>00420 {{0x2f,0x6e,0x73,0x13,0xbf,0xbb,0xbf,0xcc,0x3a,0x2d,0xde,0x26,0x8b,0x59,0xcc,0x4d},<a name="l00421"></a>00421 {0x69,0xf6,0xca,0xff,0x40,0x25,0x36,0xd1,0x7a,0xe1,0x38,0x03,0x2c,0x0c,0x5f,0xfd},<a name="l00422"></a>00422 {0x56,0xd3,0x2b,0x6c,0x34,0x76,0x65,0xd9,0x74,0xd6,0xf7,0x5c,0x3f,0xc6,0xf0,0x40},<a name="l00423"></a>00423 {0xb8,0x02,0xb2,0x15,0x4e,0x59,0x8b,0x6f,0x87,0x60,0x56,0xc7,0x85,0x46,0x2c,0x0b},<a name="l00424"></a>00424 {0x5a,0xde,0xf4,0xbf,0xf8,0x04,0xbe,0x08,0x58,0x7e,0x94,0x41,0xcf,0x6d,0xbd,0x57},<a name="l00425"></a>00425 {0x18,0xe3,0x49,0xa5,0x24,0x44,0xb3,0x0e,0x5e,0xba,0x5a,0xdd,0xdc,0xd9,0xf1,0x8d},<a name="l00426"></a>00426 {0xf2,0xb9,0x06,0xa5,0xb8,0x4b,0x9b,0x4b,0xbe,0x95,0xed,0x32,0x56,0x4e,0xe7,0xeb}}};<a name="l00427"></a>00427 <a name="l00428"></a>00428 byte digest[MD5MAC::DIGESTSIZE];<a name="l00429"></a>00429 <span class="keywordtype">bool</span> pass=<span class="keyword">true</span>, fail;<a name="l00430"></a>00430 <a name="l00431"></a>00431 cout << <span class="stringliteral">"\nMD5MAC validation suite running...\n"</span>;<a name="l00432"></a>00432 <a name="l00433"></a>00433 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k=0; k<2; k++)<a name="l00434"></a>00434 {<a name="l00435"></a>00435 MD5MAC mac(keys[k]);<a name="l00436"></a>00436 cout << <span class="stringliteral">"\nKEY: "</span>;<a name="l00437"></a>00437 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0;j<MD5MAC::KEYLENGTH;j++)<a name="l00438"></a>00438 cout << setw(2) << setfill(<span class="charliteral">'0'</span>) << hex << (<span class="keywordtype">int</span>)keys[k][j];<a name="l00439"></a>00439 cout << endl << endl;<a name="l00440"></a>00440 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0;i<7;i++)<a name="l00441"></a>00441 {<a name="l00442"></a>00442 mac.Update((byte *)TestVals[i], strlen(TestVals[i]));<a name="l00443"></a>00443 mac.Final(digest);<a name="l00444"></a>00444 fail = memcmp(digest, output[k][i], MD5MAC::DIGESTSIZE)<a name="l00445"></a>00445 || !mac.VerifyDigest(output[k][i], (byte *)TestVals[i], strlen(TestVals[i]));<a name="l00446"></a>00446 pass = pass && !fail;<a name="l00447"></a>00447 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>);<a name="l00448"></a>00448 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0;j<MD5MAC::DIGESTSIZE;j++)<a name="l00449"></a>00449 cout << setw(2) << setfill(<span class="charliteral">'0'</span>) << hex << (<span class="keywordtype">int</span>)digest[j];<a name="l00450"></a>00450 cout << <span class="stringliteral">" \""</span> << TestVals[i] << <span class="charliteral">'\"'</span> << endl;<a name="l00451"></a>00451 }<a name="l00452"></a>00452 }<a name="l00453"></a>00453 <a name="l00454"></a>00454 <span class="keywordflow">return</span> pass;<a name="l00455"></a>00455 }<a name="l00456"></a>00456 <span class="preprocessor">#endif</span><a name="l00457"></a>00457 <span class="preprocessor"></span><a name="l00458"></a>00458 <span class="keywordtype">bool</span> ValidateHMAC()<a name="l00459"></a>00459 {<a name="l00460"></a>00460 <span class="keyword">typedef</span> <a class="code" href="class_h_m_a_c.html" title="HMAC">HMAC<Weak::MD5></a> HMAC_MD5;<a name="l00461"></a>00461 <a name="l00462"></a>00462 <span class="keyword">const</span> <span class="keywordtype">char</span>* keys[]=<a name="l00463"></a>00463 {<a name="l00464"></a>00464 <span class="stringliteral">"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"</span>,<a name="l00465"></a>00465 <span class="stringliteral">"Jefe"</span>,<a name="l00466"></a>00466 <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span>,<a name="l00467"></a>00467 <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span><a name="l00468"></a>00468 <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span><a name="l00469"></a>00469 <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span><a name="l00470"></a>00470 <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span><a name="l00471"></a>00471 <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span><a name="l00472"></a>00472 };<a name="l00473"></a>00473 <a name="l00474"></a>00474 <a class="code" href="struct_hash_test_tuple.html">HashTestTuple</a> testSet[] = <a name="l00475"></a>00475 {<a name="l00476"></a>00476 <a class="code" href="struct_hash_test_tuple.html">HashTestTuple</a>(<span class="stringliteral">"Hi There"</span>, <span class="stringliteral">"\x92\x94\x72\x7a\x36\x38\xbb\x1c\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d"</span>),<a name="l00477"></a>00477 <a class="code" href="struct_hash_test_tuple.html">HashTestTuple</a>(<span class="stringliteral">"what do ya want for nothing?"</span>, <span class="stringliteral">"\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7\x38"</span>),<a name="l00478"></a>00478 <a class="code" href="struct_hash_test_tuple.html">HashTestTuple</a>(<span class="stringliteral">"\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"</span>,<a name="l00479"></a>00479 <span class="stringliteral">"\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6"</span>),<a name="l00480"></a>00480 <a class="code" href="struct_hash_test_tuple.html">HashTestTuple</a>(<span class="stringliteral">"Test Using Larger Than Block-Size Key - Hash Key First"</span>, <span class="stringliteral">"\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f\x0b\x62\xe6\xce\x61\xb9\xd0\xcd"</span>)<a name="l00481"></a>00481 };<a name="l00482">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -