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

📄 validat3_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00320                 HashTestTuple(<span class="stringliteral">""</span>, <span class="stringliteral">"\xaa\x0c\xc9\x54\xd7\x57\xd7\xac\x77\x79\xca\x33\x42\x33\x4c\xa4\x71\xab\xd4\x7d\x59\x52\xac\x91\xed\x83\x7e\xcd\x5b\x16\x92\x2b"</span>),00321                 HashTestTuple(<span class="stringliteral">"The quick brown fox jumps over the lazy dog"</span>, <span class="stringliteral">"\x5f\x5c\xa3\x55\xb9\x0a\xc6\x22\xb0\xaa\x7e\x65\x4e\xf5\xf2\x7e\x9e\x75\x11\x14\x15\xb4\x8b\x8a\xfe\x3a\xdd\x1c\x6b\x89\xcb\xa1"</span>),00322                 HashTestTuple(<span class="stringliteral">"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"</span>, <span class="stringliteral">"\xaf\x9c\x66\xfb\x60\x58\xe2\x23\x2a\x5d\xfb\xa0\x63\xee\x14\xb0\xf8\x6f\x0e\x33\x4e\x16\x58\x12\x55\x94\x35\x46\x4d\xd9\xbb\x60"</span>, 15625)00323         };00324         HashTestTuple testSet2[] = 00325         {00326                 HashTestTuple(<span class="stringliteral">""</span>, <span class="stringliteral">"\xe8\x1a\xa0\x45\x23\x53\x2d\xd7\x26\x7e\x5c\x5b\xc3\xba\x0e\x28\x98\x37\xa6\x2b\xa0\x32\x35\x03\x51\x98\x0e\x96\x0a\x84\xb0\xaf"</span>),00327                 HashTestTuple(<span class="stringliteral">"The quick brown fox jumps over the lazy dog"</span>, <span class="stringliteral">"\x8f\xa7\xda\xdc\xe0\x11\x0f\x97\x9a\x0b\x79\x5e\x76\xb2\xc2\x56\x28\xd8\xbd\xa8\x87\x47\x75\x81\x49\xc4\x2e\x3b\xc1\x3f\x85\xbc"</span>),00328                 HashTestTuple(<span class="stringliteral">"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"</span>, <span class="stringliteral">"\xcb\x34\xf0\x93\x7e\x8d\x87\x0d\x3b\xd7\xff\x63\x11\x76\x5f\x2c\x22\x9a\x6c\x21\x54\xe4\xdb\x11\x95\x38\xdb\x51\x59\x43\x7c\xab"</span>, 15625)00329         };00330 00331         cout &lt;&lt; <span class="stringliteral">"\nPanama Hash Function (little endian) validation suite running...\n\n"</span>;00332         <a class="code" href="class_panama_hash.html">PanamaHash&lt;LittleEndian&gt;</a> panamaLE;00333         pass = HashModuleTest(panamaLE, testSet1, <span class="keyword">sizeof</span>(testSet1)/<span class="keyword">sizeof</span>(testSet1[0])) &amp;&amp; pass;00334 00335         cout &lt;&lt; <span class="stringliteral">"\nPanama Hash Function (big endian) validation suite running...\n\n"</span>;00336         <a class="code" href="class_panama_hash.html">PanamaHash&lt;BigEndian&gt;</a> panamaBE;00337         pass = HashModuleTest(panamaBE, testSet2, <span class="keyword">sizeof</span>(testSet2)/<span class="keyword">sizeof</span>(testSet2[0])) &amp;&amp; pass;00338 00339         <span class="comment">// these were generated by Crypto++</span>00340         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> Key0[] = {00341                 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,00342                 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,00343                 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,00344                 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,00345                 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,00346                 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,00347                 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,00348                 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f};00349         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> Input0l[] = {00350                 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,00351                 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,00352                 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,00353                 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f};00354         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> Output0l[] = {00355                 0xF0,0x7F,0x5F,0xF2,0xCC,0xD0,0x1A,0x0A,00356                 0x7D,0x44,0xAC,0xD6,0xD2,0x39,0xC2,0xAF,00357                 0x0D,0xA1,0xFF,0x35,0x27,0x5B,0xAF,0x5D,00358                 0xFA,0x6E,0x09,0x41,0x1B,0x79,0xD8,0xB9};00359         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> Input0b[] = {00360                 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,00361                 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,00362                 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,00363                 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f};00364         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> Output0b[] = {00365                 0xE1,0x2E,0x2F,0x6B,0xA4,0x1A,0xE8,0x32,00366                 0xD8,0x88,0xDA,0x9F,0xA6,0x86,0x3B,0xC3,00367                 0x7C,0x0E,0x99,0x6F,0x19,0x0A,0x17,0x11,00368                 0x33,0x03,0x22,0xD3,0x7B,0xD9,0x8C,0xA4};00369 00370         <span class="comment">// VC60 workaround: auto_ptr lacks reset()</span>00371         member_ptr&lt;StreamTransformation&gt; cipher;00372         <span class="keywordtype">bool</span> fail;00373 00374         cout &lt;&lt; <span class="stringliteral">"\nPanama Cipher (little endian) validation suite running...\n\n"</span>;00375 00376         cipher.reset(<span class="keyword">new</span> <a class="code" href="struct_panama_cipher.html">PanamaCipher&lt;LittleEndian&gt;</a>::Encryption(Key0, 64));00377         cipher-&gt;ProcessString(Input0l, <span class="keyword">sizeof</span>(Input0l));00378         fail = memcmp(Input0l, Output0l, <span class="keyword">sizeof</span>(Input0l)) != 0;00379         cout &lt;&lt; (fail ? <span class="stringliteral">"FAILED"</span> : <span class="stringliteral">"passed"</span>) &lt;&lt; <span class="stringliteral">"    Test 0"</span> &lt;&lt; endl;00380         pass = pass &amp;&amp; !fail;00381 00382         cout &lt;&lt; <span class="stringliteral">"\nPanama Cipher (big endian) validation suite running...\n\n"</span>;00383 00384         cipher.reset(<span class="keyword">new</span> <a class="code" href="struct_panama_cipher.html">PanamaCipher&lt;BigEndian&gt;</a>::Encryption(Key0, 64));00385         cipher-&gt;ProcessString(Input0b, <span class="keyword">sizeof</span>(Input0b));00386         fail = memcmp(Input0b, Output0b, <span class="keyword">sizeof</span>(Input0b)) != 0;00387         cout &lt;&lt; (fail ? <span class="stringliteral">"FAILED"</span> : <span class="stringliteral">"passed"</span>) &lt;&lt; <span class="stringliteral">"    Test 0"</span> &lt;&lt; endl;00388         pass = pass &amp;&amp; !fail;00389 00390         <span class="keywordflow">return</span> pass;00391 }00392 00393 <span class="keywordtype">bool</span> ValidateMD5MAC()00394 {00395         <span class="keyword">const</span> byte keys[2][MD5MAC::KEYLENGTH]={00396                 {0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff},00397                 {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10}};00398 00399         <span class="keyword">const</span> <span class="keywordtype">char</span> *TestVals[7]={00400                 <span class="stringliteral">""</span>,00401                 <span class="stringliteral">"a"</span>,00402                 <span class="stringliteral">"abc"</span>,00403                 <span class="stringliteral">"message digest"</span>,00404                 <span class="stringliteral">"abcdefghijklmnopqrstuvwxyz"</span>,00405                 <span class="stringliteral">"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"</span>,00406                 <span class="stringliteral">"12345678901234567890123456789012345678901234567890123456789012345678901234567890"</span>};00407 00408         <span class="keyword">const</span> byte output[2][7][MD5MAC::DIGESTSIZE]={00409                 {{0x1f,0x1e,0xf2,0x37,0x5c,0xc0,0xe0,0x84,0x4f,0x98,0xe7,0xe8,0x11,0xa3,0x4d,0xa8},00410                 {0x7a,0x76,0xee,0x64,0xca,0x71,0xef,0x23,0x7e,0x26,0x29,0xed,0x94,0x52,0x73,0x65},00411                 {0xe8,0x01,0x3c,0x11,0xf7,0x20,0x9d,0x13,0x28,0xc0,0xca,0xa0,0x4f,0xd0,0x12,0xa6},00412                 {0xc8,0x95,0x53,0x4f,0x22,0xa1,0x74,0xbc,0x3e,0x6a,0x25,0xa2,0xb2,0xef,0xd6,0x30},00413                 {0x91,0x72,0x86,0x7e,0xb6,0x00,0x17,0x88,0x4c,0x6f,0xa8,0xcc,0x88,0xeb,0xe7,0xc9},00414                 {0x3b,0xd0,0xe1,0x1d,0x5e,0x09,0x4c,0xb7,0x1e,0x35,0x44,0xac,0xa9,0xb8,0xbf,0xa2},00415                 {0x93,0x37,0x16,0x64,0x44,0xcc,0x95,0x35,0xb7,0xd5,0xb8,0x0f,0x91,0xe5,0x29,0xcb}},00416                 {{0x2f,0x6e,0x73,0x13,0xbf,0xbb,0xbf,0xcc,0x3a,0x2d,0xde,0x26,0x8b,0x59,0xcc,0x4d},00417                 {0x69,0xf6,0xca,0xff,0x40,0x25,0x36,0xd1,0x7a,0xe1,0x38,0x03,0x2c,0x0c,0x5f,0xfd},00418                 {0x56,0xd3,0x2b,0x6c,0x34,0x76,0x65,0xd9,0x74,0xd6,0xf7,0x5c,0x3f,0xc6,0xf0,0x40},00419                 {0xb8,0x02,0xb2,0x15,0x4e,0x59,0x8b,0x6f,0x87,0x60,0x56,0xc7,0x85,0x46,0x2c,0x0b},00420                 {0x5a,0xde,0xf4,0xbf,0xf8,0x04,0xbe,0x08,0x58,0x7e,0x94,0x41,0xcf,0x6d,0xbd,0x57},00421                 {0x18,0xe3,0x49,0xa5,0x24,0x44,0xb3,0x0e,0x5e,0xba,0x5a,0xdd,0xdc,0xd9,0xf1,0x8d},00422                 {0xf2,0xb9,0x06,0xa5,0xb8,0x4b,0x9b,0x4b,0xbe,0x95,0xed,0x32,0x56,0x4e,0xe7,0xeb}}};00423 00424         byte digest[MD5MAC::DIGESTSIZE];00425         <span class="keywordtype">bool</span> pass=<span class="keyword">true</span>, fail;00426 00427         cout &lt;&lt; <span class="stringliteral">"\nMD5MAC validation suite running...\n"</span>;00428 00429         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k=0; k&lt;2; k++)00430         {00431                 <a class="code" href="class_message_authentication_code_final_template.html">MD5MAC</a> mac(keys[k]);00432                 cout &lt;&lt; <span class="stringliteral">"\nKEY: "</span>;00433                 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0;j&lt;MD5MAC::KEYLENGTH;j++)00434                         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];00435                 cout &lt;&lt; endl &lt;&lt; endl;00436                 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0;i&lt;7;i++)00437                 {00438                         mac.<a class="code" href="class_hash_transformation.html#_x_m_a_c_ca5">Update</a>((byte *)TestVals[i], strlen(TestVals[i]));00439                         mac.<a class="code" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final</a>(digest);00440                         fail = memcmp(digest, output[k][i], MD5MAC::DIGESTSIZE)00441                                  || !mac.<a class="code" href="class_hash_transformation.html#_x_m_a_c_c___basea16">VerifyDigest</a>(output[k][i], (byte *)TestVals[i], strlen(TestVals[i]));00442                         pass = pass &amp;&amp; !fail;00443                         cout &lt;&lt; (fail ? <span class="stringliteral">"FAILED   "</span> : <span class="stringliteral">"passed   "</span>);00444                         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0;j&lt;MD5MAC::DIGESTSIZE;j++)00445                                 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];00446                         cout &lt;&lt; <span class="stringliteral">"   \""</span> &lt;&lt; TestVals[i] &lt;&lt; <span class="charliteral">'\"'</span> &lt;&lt; endl;00447                 }00448         }00449 00450         <span class="keywordflow">return</span> pass;00451 }00452 00453 <span class="keywordtype">bool</span> ValidateHMAC()00454 {00455         <span class="keyword">typedef</span> <a class="code" href="class_h_m_a_c.html">HMAC&lt;MD5&gt;</a> HMAC_MD5;00456 00457         <span class="keyword">const</span> <span class="keywordtype">char</span>* keys[]=00458         {00459                 <span class="stringliteral">"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"</span>,00460                 <span class="stringliteral">"Jefe"</span>,00461                 <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span>,00462                 <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span>00463                         <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span>00464                         <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span>00465                         <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span>00466                         <span class="stringliteral">"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"</span>00467         };00468 00469         HashTestTuple testSet[] = 00470         {00471                 HashTestTuple(<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>),00472                 HashTestTuple(<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>),00473                 HashTestTuple(<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>,00474                         <span class="stringliteral">"\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6"</span>),00475                 HashTestTuple(<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>)00476         };00477 00478         <span class="keywordtype">bool</span> pass=<span class="keyword">true</span>;00479 00480         cout &lt;&lt; <span class="stringliteral">"\nHMAC/MD5 validation suite running...\n"</span>;00481 00482         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k=0; k&lt;4; k++)

⌨️ 快捷键说明

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