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

📄 test_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00432 <span class="keywordtype">void</span> HmacFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *hexKey, <span class="keyword">const</span> <span class="keywordtype">char</span> *file)00433 {00434         member_ptr&lt;MessageAuthenticationCode&gt; mac;00435         std::string decodedKey;00436         <a class="code" href="class_string_source.html">StringSource</a>(hexKey, <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_string_sink_template.html">StringSink</a>(decodedKey)));00437         mac.reset(<span class="keyword">new</span> <a class="code" href="class_h_m_a_c.html">HMAC&lt;SHA1&gt;</a>((<span class="keyword">const</span> byte *)decodedKey.data(), decodedKey.size()));00438         <a class="code" href="class_file_source.html">FileSource</a>(file, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hash_filter.html">HashFilter</a>(*mac, <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>(cout))));00439 }00440 00441 string EncryptString(<span class="keyword">const</span> <span class="keywordtype">char</span> *instr, <span class="keyword">const</span> <span class="keywordtype">char</span> *passPhrase)00442 {00443         string outstr;00444 00445         <a class="code" href="class_default_encryptor_with_m_a_c.html">DefaultEncryptorWithMAC</a> encryptor(passPhrase, <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>(outstr)));00446         encryptor.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>((byte *)instr, strlen(instr));00447         encryptor.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_7">MessageEnd</a>();00448 00449         <span class="keywordflow">return</span> outstr;00450 }00451 00452 string DecryptString(<span class="keyword">const</span> <span class="keywordtype">char</span> *instr, <span class="keyword">const</span> <span class="keywordtype">char</span> *passPhrase)00453 {00454         string outstr;00455 00456         <a class="code" href="class_hex_decoder.html">HexDecoder</a> decryptor(<span class="keyword">new</span> <a class="code" href="class_default_decryptor_with_m_a_c.html">DefaultDecryptorWithMAC</a>(passPhrase, <span class="keyword">new</span> <a class="code" href="class_string_sink_template.html">StringSink</a>(outstr)));00457         decryptor.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>((byte *)instr, strlen(instr));00458         decryptor.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_7">MessageEnd</a>();00459 00460         <span class="keywordflow">return</span> outstr;00461 }00462 00463 <span class="keywordtype">void</span> EncryptFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out, <span class="keyword">const</span> <span class="keywordtype">char</span> *passPhrase)00464 {00465         <a class="code" href="class_file_source.html">FileSource</a> f(in, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_default_encryptor_with_m_a_c.html">DefaultEncryptorWithMAC</a>(passPhrase, <span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(out)));00466 }00467 00468 <span class="keywordtype">void</span> DecryptFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out, <span class="keyword">const</span> <span class="keywordtype">char</span> *passPhrase)00469 {00470         <a class="code" href="class_file_source.html">FileSource</a> f(in, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_default_decryptor_with_m_a_c.html">DefaultDecryptorWithMAC</a>(passPhrase, <span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(out)));00471 }00472 00473 <span class="keywordtype">void</span> SecretShareFile(<span class="keywordtype">int</span> threshold, <span class="keywordtype">int</span> nShares, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <span class="keywordtype">char</span> *seed)00474 {00475         assert(nShares&lt;=1000);00476 00477         <a class="code" href="class_random_pool.html">RandomPool</a> rng;00478         rng.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>((byte *)seed, strlen(seed));00479 00480         <a class="code" href="class_channel_switch.html">ChannelSwitch</a> *channelSwitch;00481         <a class="code" href="class_file_source.html">FileSource</a> source(filename, <span class="keyword">false</span>, <span class="keyword">new</span> <a class="code" href="class_secret_sharing.html">SecretSharing</a>(rng, threshold, nShares, channelSwitch = <span class="keyword">new</span> <a class="code" href="class_channel_switch.html">ChannelSwitch</a>));00482 00483         vector_member_ptrs&lt;FileSink&gt; fileSinks(nShares);00484         string channel;00485         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;nShares; i++)00486         {00487                 <span class="keywordtype">char</span> extension[5] = <span class="stringliteral">".000"</span>;00488                 extension[1]=<span class="charliteral">'0'</span>+byte(i/100);00489                 extension[2]=<span class="charliteral">'0'</span>+byte((i/10)%10);00490                 extension[3]=<span class="charliteral">'0'</span>+byte(i%10);00491                 fileSinks[i].reset(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>((string(filename)+extension).c_str()));00492 00493                 channel = WordToString&lt;word32&gt;(i);00494                 fileSinks[i]-&gt;Put((byte *)channel.data(), 4);00495                 channelSwitch-&gt;<a class="code" href="class_channel_switch.html#_channel_switcha13">AddRoute</a>(channel, *fileSinks[i], BufferedTransformation::NULL_CHANNEL);00496         }00497 00498         source.<a class="code" href="class_source.html#_windows_pipe_sourcea16">PumpAll</a>();00499 }00500 00501 <span class="keywordtype">void</span> SecretRecoverFile(<span class="keywordtype">int</span> threshold, <span class="keyword">const</span> <span class="keywordtype">char</span> *outFilename, <span class="keywordtype">char</span> *<span class="keyword">const</span> *inFilenames)00502 {00503         assert(threshold&lt;=1000);00504 00505         <a class="code" href="class_secret_recovery.html">SecretRecovery</a> recovery(threshold, <span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(outFilename));00506 00507         vector_member_ptrs&lt;FileSource&gt; fileSources(threshold);00508         <a class="code" href="class_sec_block.html">SecByteBlock</a> channel(4);00509         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;00510         <span class="keywordflow">for</span> (i=0; i&lt;threshold; i++)00511         {00512                 fileSources[i].reset(<span class="keyword">new</span> <a class="code" href="class_file_source.html">FileSource</a>(inFilenames[i], <span class="keyword">false</span>));00513                 fileSources[i]-&gt;Pump(4);00514                 fileSources[i]-&gt;Get(channel, 4);00515                 fileSources[i]-&gt;Attach(<span class="keyword">new</span> <a class="code" href="class_channel_switch.html">ChannelSwitch</a>(recovery, string((<span class="keywordtype">char</span> *)channel.<a class="code" href="class_sec_block.html#_sec_block_with_hinta7">begin</a>(), 4)));00516         }00517 00518         <span class="keywordflow">while</span> (fileSources[0]-&gt;Pump(256))00519                 <span class="keywordflow">for</span> (i=1; i&lt;threshold; i++)00520                         fileSources[i]-&gt;Pump(256);00521 00522         <span class="keywordflow">for</span> (i=0; i&lt;threshold; i++)00523                 fileSources[i]-&gt;PumpAll();00524 }00525 00526 <span class="keywordtype">void</span> InformationDisperseFile(<span class="keywordtype">int</span> threshold, <span class="keywordtype">int</span> nShares, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename)00527 {00528         assert(nShares&lt;=1000);00529 00530         <a class="code" href="class_channel_switch.html">ChannelSwitch</a> *channelSwitch;00531         <a class="code" href="class_file_source.html">FileSource</a> source(filename, <span class="keyword">false</span>, <span class="keyword">new</span> <a class="code" href="class_information_dispersal.html">InformationDispersal</a>(threshold, nShares, channelSwitch = <span class="keyword">new</span> <a class="code" href="class_channel_switch.html">ChannelSwitch</a>));00532 00533         vector_member_ptrs&lt;FileSink&gt; fileSinks(nShares);00534         string channel;00535         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;nShares; i++)00536         {00537                 <span class="keywordtype">char</span> extension[5] = <span class="stringliteral">".000"</span>;00538                 extension[1]=<span class="charliteral">'0'</span>+byte(i/100);00539                 extension[2]=<span class="charliteral">'0'</span>+byte((i/10)%10);00540                 extension[3]=<span class="charliteral">'0'</span>+byte(i%10);00541                 fileSinks[i].reset(<span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>((string(filename)+extension).c_str()));00542 00543                 channel = WordToString&lt;word32&gt;(i);00544                 fileSinks[i]-&gt;Put((byte *)channel.data(), 4);00545                 channelSwitch-&gt;<a class="code" href="class_channel_switch.html#_channel_switcha13">AddRoute</a>(channel, *fileSinks[i], BufferedTransformation::NULL_CHANNEL);00546         }00547 00548         source.<a class="code" href="class_source.html#_windows_pipe_sourcea16">PumpAll</a>();00549 }00550 00551 <span class="keywordtype">void</span> InformationRecoverFile(<span class="keywordtype">int</span> threshold, <span class="keyword">const</span> <span class="keywordtype">char</span> *outFilename, <span class="keywordtype">char</span> *<span class="keyword">const</span> *inFilenames)00552 {00553         assert(threshold&lt;=1000);00554 00555         <a class="code" href="class_information_recovery.html">InformationRecovery</a> recovery(threshold, <span class="keyword">new</span> <a class="code" href="class_file_sink.html">FileSink</a>(outFilename));00556 00557         vector_member_ptrs&lt;FileSource&gt; fileSources(threshold);00558         <a class="code" href="class_sec_block.html">SecByteBlock</a> channel(4);00559         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;00560         <span class="keywordflow">for</span> (i=0; i&lt;threshold; i++)00561         {00562                 fileSources[i].reset(<span class="keyword">new</span> <a class="code" href="class_file_source.html">FileSource</a>(inFilenames[i], <span class="keyword">false</span>));00563                 fileSources[i]-&gt;Pump(4);00564                 fileSources[i]-&gt;Get(channel, 4);00565                 fileSources[i]-&gt;Attach(<span class="keyword">new</span> <a class="code" href="class_channel_switch.html">ChannelSwitch</a>(recovery, string((<span class="keywordtype">char</span> *)channel.<a class="code" href="class_sec_block.html#_sec_block_with_hinta7">begin</a>(), 4)));00566         }00567 00568         <span class="keywordflow">while</span> (fileSources[0]-&gt;Pump(256))00569                 <span class="keywordflow">for</span> (i=1; i&lt;threshold; i++)00570                         fileSources[i]-&gt;Pump(256);00571 00572         <span class="keywordflow">for</span> (i=0; i&lt;threshold; i++)00573                 fileSources[i]-&gt;PumpAll();00574 }00575 00576 <span class="keywordtype">void</span> GzipFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out, <span class="keywordtype">int</span> deflate_level)00577 {

⌨️ 快捷键说明

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