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

📄 test_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00286                 <span class="keywordflow">case</span> <span class="charliteral">'u'</span>:00287                         GunzipFile(argv[2], argv[3]);00288                         <span class="keywordflow">return</span> 0;00289                 <span class="keywordflow">case</span> <span class="charliteral">'f'</span>:00290                         <span class="keywordflow">if</span> (command == <span class="stringliteral">"fips"</span>)00291                                 FIPS140_SampleApplication();00292                         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"fips-rand"</span>)00293                                 FIPS140_GenerateRandomFiles();00294                         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"ft"</span>)00295                                 ForwardTcpPort(argv[2], argv[3], argv[4]);00296                         <span class="keywordflow">return</span> 0;00297                 <span class="keywordflow">case</span> <span class="charliteral">'h'</span>:00298                         <span class="keywordflow">if</span> (command == <span class="stringliteral">"hmac"</span>)00299                         {00300                                 HmacFile(argv[2], argv[3]);00301                                 <span class="keywordflow">return</span> 0;00302                         }00303                         <span class="comment">// fall through</span>00304                 <span class="keywordflow">default</span>:00305                         <a class="code" href="class_file_source.html">FileSource</a> usage(<span class="stringliteral">"usage.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(cout));00306                         <span class="keywordflow">return</span> 1;00307                 }00308         }00309         <span class="keywordflow">catch</span>(CryptoPP::Exception &amp;e)00310         {00311                 cout &lt;&lt; <span class="stringliteral">"\nCryptoPP::Exception caught: "</span> &lt;&lt; e.what() &lt;&lt; endl;00312                 <span class="keywordflow">return</span> -1;00313         }00314         <span class="keywordflow">catch</span>(std::exception &amp;e)00315         {00316                 cout &lt;&lt; <span class="stringliteral">"\nstd::exception caught: "</span> &lt;&lt; e.what() &lt;&lt; endl;00317                 <span class="keywordflow">return</span> -2;00318         }00319 }00320 00321 <span class="keywordtype">void</span> FIPS140_GenerateRandomFiles()00322 {00323 <span class="preprocessor">#ifdef OS_RNG_AVAILABLE</span>00324 <span class="preprocessor"></span>        <a class="code" href="class_auto_seeded_x917_r_n_g.html">AutoSeededX917RNG&lt;DES_EDE3&gt;</a> rng;00325         <a class="code" href="class_random_number_store.html">RandomNumberStore</a> store(rng, ULONG_MAX);00326 00327         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;100000; i++)00328                 store.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_10">TransferTo</a>(<a class="code" href="class_file_sink.html">FileSink</a>((IntToString(i) + <span class="stringliteral">".rnd"</span>).c_str()).Ref(), 20000);00329 <span class="preprocessor">#else</span>00330 <span class="preprocessor"></span>        cout &lt;&lt; <span class="stringliteral">"OS provided RNG not available.\n"</span>;00331         exit(-1);00332 <span class="preprocessor">#endif</span>00333 <span class="preprocessor"></span>}00334 00335 <a class="code" href="class_random_pool.html">RandomPool</a> &amp; GlobalRNG()00336 {00337         <span class="keyword">static</span> <a class="code" href="class_random_pool.html">RandomPool</a> randomPool;00338         <span class="keywordflow">return</span> randomPool;00339 }00340 00341 <span class="keywordtype">void</span> GenerateRSAKey(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> keyLength, <span class="keyword">const</span> <span class="keywordtype">char</span> *privFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *pubFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *seed)00342 {00343         <a class="code" href="class_random_pool.html">RandomPool</a> randPool;00344         randPool.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>((byte *)seed, strlen(seed));00345 00346         <a class="code" href="struct_r_s_a_e_s.html">RSAES_OAEP_SHA_Decryptor</a> priv(randPool, keyLength);00347         <a class="code" href="class_hex_encoder.html">HexEncoder</a> privFile(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(privFilename));00348         priv.DEREncode(privFile);00349         privFile.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_7">MessageEnd</a>();00350 00351         <a class="code" href="struct_r_s_a_e_s.html">RSAES_OAEP_SHA_Encryptor</a> pub(priv);00352         <a class="code" href="class_hex_encoder.html">HexEncoder</a> pubFile(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(pubFilename));00353         pub.DEREncode(pubFile);00354         pubFile.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_7">MessageEnd</a>();00355 }00356 00357 string RSAEncryptString(<span class="keyword">const</span> <span class="keywordtype">char</span> *pubFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *seed, <span class="keyword">const</span> <span class="keywordtype">char</span> *message)00358 {00359         <a class="code" href="class_file_source.html">FileSource</a> pubFile(pubFilename, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00360         <a class="code" href="struct_r_s_a_e_s.html">RSAES_OAEP_SHA_Encryptor</a> pub(pubFile);00361 00362         <a class="code" href="class_random_pool.html">RandomPool</a> randPool;00363         randPool.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>((byte *)seed, strlen(seed));00364 00365         string result;00366         <a class="code" href="class_string_source.html">StringSource</a>(message, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_p_k___encryptor_filter.html">PK_EncryptorFilter</a>(randPool, pub, <span class="keyword">new</span> <a class="code" href="class_hex_encoder.html">HexEncoder</a>(<span class="keyword">new</span> <a class="code" href="class_string_sink_template.html">StringSink</a>(result))));00367         <span class="keywordflow">return</span> result;00368 }00369 00370 string RSADecryptString(<span class="keyword">const</span> <span class="keywordtype">char</span> *privFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *ciphertext)00371 {00372         <a class="code" href="class_file_source.html">FileSource</a> privFile(privFilename, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00373         <a class="code" href="struct_r_s_a_e_s.html">RSAES_OAEP_SHA_Decryptor</a> priv(privFile);00374 00375         string result;00376         <a class="code" href="class_string_source.html">StringSource</a>(ciphertext, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>(<span class="keyword">new</span> <a class="code" href="class_p_k___decryptor_filter.html">PK_DecryptorFilter</a>(priv, <span class="keyword">new</span> <a class="code" href="class_string_sink_template.html">StringSink</a>(result))));00377         <span class="keywordflow">return</span> result;00378 }00379 00380 <span class="keywordtype">void</span> RSASignFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *privFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *messageFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *signatureFilename)00381 {00382         <a class="code" href="class_file_source.html">FileSource</a> privFile(privFilename, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00383         <a class="code" href="struct_r_s_a_s_s_a.html">RSASSA_PKCS1v15_SHA_Signer</a> priv(privFile);00384         <span class="comment">// RSASSA_PKCS1v15_SHA_Signer ignores the rng. Use a real RNG for other signature schemes!</span>00385         <a class="code" href="class_file_source.html">FileSource</a> f(messageFilename, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_signer_filter.html">SignerFilter</a>(NullRNG(), priv, <span class="keyword">new</span> <a class="code" href="class_hex_encoder.html">HexEncoder</a>(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(signatureFilename))));00386 }00387 00388 <span class="keywordtype">bool</span> RSAVerifyFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *pubFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *messageFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *signatureFilename)00389 {00390         <a class="code" href="class_file_source.html">FileSource</a> pubFile(pubFilename, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00391         <a class="code" href="struct_r_s_a_s_s_a.html">RSASSA_PKCS1v15_SHA_Verifier</a> pub(pubFile);00392 00393         <a class="code" href="class_file_source.html">FileSource</a> signatureFile(signatureFilename, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00394         <span class="keywordflow">if</span> (signatureFile.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_0">MaxRetrievable</a>() != pub.SignatureLength())00395                 <span class="keywordflow">return</span> <span class="keyword">false</span>;00396         <a class="code" href="class_sec_block.html">SecByteBlock</a> signature(pub.SignatureLength());00397         signatureFile.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">Get</a>(signature, signature.<a class="code" href="class_sec_block.html#_sec_block_with_hinta13">size</a>());00398 00399         <a class="code" href="class_signature_verification_filter.html">VerifierFilter</a> *verifierFilter = <span class="keyword">new</span> <a class="code" href="class_signature_verification_filter.html">VerifierFilter</a>(pub);00400         verifierFilter-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(signature, pub.SignatureLength());00401         <a class="code" href="class_file_source.html">FileSource</a> f(messageFilename, <span class="keyword">true</span>, verifierFilter);00402 00403         <span class="keywordflow">return</span> verifierFilter-&gt;<a class="code" href="class_signature_verification_filter.html#_signature_verification_filtera1">GetLastResult</a>();00404 }00405 00406 <span class="keywordtype">void</span> DigestFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename)00407 {00408         <a class="code" href="class_m_d5.html">MD5</a> md5;00409         <a class="code" href="class_s_h_a.html">SHA</a> sha;00410         <a class="code" href="class_r_i_p_e_m_d160.html">RIPEMD160</a> ripemd;00411         <a class="code" href="class_s_h_a256.html">SHA256</a> sha256;00412         <a class="code" href="class_hash_filter.html">HashFilter</a> md5Filter(md5), shaFilter(sha), ripemdFilter(ripemd), sha256Filter(sha256);00413 00414         auto_ptr&lt;ChannelSwitch&gt; channelSwitch(<span class="keyword">new</span> <a class="code" href="class_channel_switch.html">ChannelSwitch</a>);00415         channelSwitch-&gt;AddDefaultRoute(md5Filter);00416         channelSwitch-&gt;AddDefaultRoute(shaFilter);00417         channelSwitch-&gt;AddDefaultRoute(ripemdFilter);00418         channelSwitch-&gt;AddDefaultRoute(sha256Filter);00419         <a class="code" href="class_file_source.html">FileSource</a>(filename, <span class="keyword">true</span>, channelSwitch.release());00420 00421         <a class="code" href="class_hex_encoder.html">HexEncoder</a> encoder(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(cout), <span class="keyword">false</span>);00422         cout &lt;&lt; <span class="stringliteral">"\nMD5: "</span>;00423         md5Filter.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_10">TransferTo</a>(encoder);00424         cout &lt;&lt; <span class="stringliteral">"\nSHA-1: "</span>;00425         shaFilter.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_10">TransferTo</a>(encoder);00426         cout &lt;&lt; <span class="stringliteral">"\nRIPEMD-160: "</span>;00427         ripemdFilter.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_10">TransferTo</a>(encoder);00428         cout &lt;&lt; <span class="stringliteral">"\nSHA-256: "</span>;00429         sha256Filter.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_10">TransferTo</a>(encoder);00430 }00431 

⌨️ 快捷键说明

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