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

📄 validat3_8cpp-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00384"></a>00384 <span class="keywordtype">bool</span> ValidateWhirlpool()<a name="l00385"></a>00385 {<a name="l00386"></a>00386         cout &lt;&lt; <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 &lt;&lt; <span class="stringliteral">"word64 not available, skipping Whirlpool validation."</span> &lt;&lt; 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 &lt;&lt; <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&lt;2; k++)<a name="l00434"></a>00434         {<a name="l00435"></a>00435                 MD5MAC mac(keys[k]);<a name="l00436"></a>00436                 cout &lt;&lt; <span class="stringliteral">"\nKEY: "</span>;<a name="l00437"></a>00437                 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0;j&lt;MD5MAC::KEYLENGTH;j++)<a name="l00438"></a>00438                         cout &lt;&lt; setw(2) &lt;&lt; setfill(<span class="charliteral">'0'</span>) &lt;&lt; hex &lt;&lt; (<span class="keywordtype">int</span>)keys[k][j];<a name="l00439"></a>00439                 cout &lt;&lt; endl &lt;&lt; endl;<a name="l00440"></a>00440                 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0;i&lt;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 &amp;&amp; !fail;<a name="l00447"></a>00447                         cout &lt;&lt; (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&lt;MD5MAC::DIGESTSIZE;j++)<a name="l00449"></a>00449                                 cout &lt;&lt; setw(2) &lt;&lt; setfill(<span class="charliteral">'0'</span>) &lt;&lt; hex &lt;&lt; (<span class="keywordtype">int</span>)digest[j];<a name="l00450"></a>00450                         cout &lt;&lt; <span class="stringliteral">"   \""</span> &lt;&lt; TestVals[i] &lt;&lt; <span class="charliteral">'\"'</span> &lt;&lt; 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&lt;Weak::MD5&gt;</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 + -