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

📄 bench_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00128         }00129         <span class="keywordflow">while</span> (timeTaken &lt; 2.0/3*timeTotal);00130 00131         OutputResultBytes(name, length, timeTaken);00132 }00133 00134 <span class="keywordtype">void</span> BenchMark(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_stream_transformation.html">StreamTransformation</a> &amp;cipher, <span class="keywordtype">double</span> timeTotal)00135 {00136         <span class="keyword">const</span> <span class="keywordtype">int</span> BUF_SIZE=1024;00137         <a class="code" href="class_sec_block.html">SecByteBlock</a> buf(BUF_SIZE);00138         clock_t start = clock();00139 00140         <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> i=0, length=BUF_SIZE;00141         <span class="keywordtype">double</span> timeTaken;00142         <span class="keywordflow">do</span>00143         {00144                 length *= 2;00145                 <span class="keywordflow">for</span> (; i&lt;length; i+=BUF_SIZE)00146                         cipher.<a class="code" href="class_stream_transformation.html#_symmetric_ciphera8">ProcessString</a>(buf, BUF_SIZE);00147                 timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND;00148         }00149         <span class="keywordflow">while</span> (timeTaken &lt; 2.0/3*timeTotal);00150 00151         OutputResultBytes(name, length, timeTaken);00152 }00153 00154 <span class="keywordtype">void</span> BenchMark(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_hash_transformation.html">HashTransformation</a> &amp;hash, <span class="keywordtype">double</span> timeTotal)00155 {00156         <span class="keyword">const</span> <span class="keywordtype">int</span> BUF_SIZE=1024;00157         <a class="code" href="class_sec_block.html">SecByteBlock</a> buf(BUF_SIZE);00158         <a class="code" href="class_l_c___r_n_g.html">LC_RNG</a> rng(time(NULL));00159         rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a>(buf, BUF_SIZE);00160         clock_t start = clock();00161 00162         <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> i=0, length=BUF_SIZE;00163         <span class="keywordtype">double</span> timeTaken;00164         <span class="keywordflow">do</span>00165         {00166                 length *= 2;00167                 <span class="keywordflow">for</span> (; i&lt;length; i+=BUF_SIZE)00168                         hash.<a class="code" href="class_hash_transformation.html#_x_m_a_c_ca5">Update</a>(buf, BUF_SIZE);00169                 timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND;00170         }00171         <span class="keywordflow">while</span> (timeTaken &lt; 2.0/3*timeTotal);00172 00173         OutputResultBytes(name, length, timeTaken);00174 }00175 00176 <span class="keywordtype">void</span> BenchMark(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, <span class="keywordtype">double</span> timeTotal)00177 {00178         <span class="keyword">const</span> <span class="keywordtype">int</span> BUF_SIZE=1024;00179         <a class="code" href="class_sec_block.html">SecByteBlock</a> buf(BUF_SIZE);00180         <a class="code" href="class_l_c___r_n_g.html">LC_RNG</a> rng(time(NULL));00181         rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a>(buf, BUF_SIZE);00182         clock_t start = clock();00183 00184         <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> i=0, length=BUF_SIZE;00185         <span class="keywordtype">double</span> timeTaken;00186         <span class="keywordflow">do</span>00187         {00188                 length *= 2;00189                 <span class="keywordflow">for</span> (; i&lt;length; i+=BUF_SIZE)00190                         bt.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(buf, BUF_SIZE);00191                 timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND;00192         }00193         <span class="keywordflow">while</span> (timeTaken &lt; 2.0/3*timeTotal);00194 00195         OutputResultBytes(name, length, timeTaken);00196 }00197 00198 <span class="keywordtype">void</span> BenchMarkEncryption(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_p_k___encryptor.html">PK_Encryptor</a> &amp;key, <span class="keywordtype">double</span> timeTotal, <span class="keywordtype">bool</span> pc=<span class="keyword">false</span>)00199 {00200         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = 16;00201         <a class="code" href="class_l_c___r_n_g.html">LC_RNG</a> rng(time(NULL));00202         <a class="code" href="class_sec_block.html">SecByteBlock</a> plaintext(len), ciphertext(key.CiphertextLength(len));00203         rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a>(plaintext, len);00204 00205         clock_t start = clock();00206         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;00207         <span class="keywordtype">double</span> timeTaken;00208         <span class="keywordflow">for</span> (timeTaken=(<span class="keywordtype">double</span>)0, i=0; timeTaken &lt; timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)00209                 key.Encrypt(rng, plaintext, len, ciphertext);00210 00211         OutputResultOperations(name, <span class="stringliteral">"Encryption"</span>, pc, i, timeTaken);00212 00213         <span class="keywordflow">if</span> (!pc &amp;&amp; key.GetMaterial().SupportsPrecomputation())00214         {00215                 key.AccessMaterial().Precompute(16);00216                 BenchMarkEncryption(name, key, timeTotal, <span class="keyword">true</span>);00217         }00218 }00219 00220 <span class="keywordtype">void</span> BenchMarkDecryption(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_p_k___decryptor.html">PK_Decryptor</a> &amp;priv, <a class="code" href="class_p_k___encryptor.html">PK_Encryptor</a> &amp;pub, <span class="keywordtype">double</span> timeTotal)00221 {00222         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = 16;00223         <a class="code" href="class_l_c___r_n_g.html">LC_RNG</a> rng(time(NULL));00224         <a class="code" href="class_sec_block.html">SecByteBlock</a> ciphertext(pub.<a class="code" href="class_p_k___crypto_system.html#_t_f___public_object_impl_3_01_t_f___encryptor_base_00_01_s_c_h_e_m_e___o_p_t_i_o_n_s_01_4a15">CiphertextLength</a>(len));00225         <a class="code" href="class_sec_block.html">SecByteBlock</a> plaintext(pub.<a class="code" href="class_p_k___crypto_system.html#_t_f___public_object_impl_3_01_t_f___encryptor_base_00_01_s_c_h_e_m_e___o_p_t_i_o_n_s_01_4a13">MaxPlaintextLength</a>(ciphertext.<a class="code" href="class_sec_block.html#_sec_block_with_hinta13">size</a>()));00226         rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a>(plaintext, len);00227         pub.<a class="code" href="class_p_k___encryptor.html#_t_f___crypto_system_base_3_01_p_k___fixed_length_encryptor_00_01_t_f___base_3_01_randomized_trapdoor_function_01_4_01_4a2">Encrypt</a>(rng, plaintext, len, ciphertext);00228 00229         clock_t start = clock();00230         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;00231         <span class="keywordtype">double</span> timeTaken;00232         <span class="keywordflow">for</span> (timeTaken=(<span class="keywordtype">double</span>)0, i=0; timeTaken &lt; timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)00233                 priv.<a class="code" href="class_p_k___decryptor.html#_p_k___decryptora0">Decrypt</a>(ciphertext, ciphertext.<a class="code" href="class_sec_block.html#_sec_block_with_hinta13">size</a>(), plaintext);00234 00235         OutputResultOperations(name, <span class="stringliteral">"Decryption"</span>, <span class="keyword">false</span>, i, timeTaken);00236 }00237 00238 <span class="keywordtype">void</span> BenchMarkSigning(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="class_p_k___signer.html">PK_Signer</a> &amp;key, <span class="keywordtype">double</span> timeTotal, <span class="keywordtype">bool</span> pc=<span class="keyword">false</span>)00239 {00240         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = 16;00241         <a class="code" href="class_l_c___r_n_g.html">LC_RNG</a> rng(time(NULL));00242         <a class="code" href="class_sec_block.html">SecByteBlock</a> message(len), signature(key.SignatureLength());00243         rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a>(message, len);00244 00245         clock_t start = clock();00246         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;00247         <span class="keywordtype">double</span> timeTaken;00248         <span class="keywordflow">for</span> (timeTaken=(<span class="keywordtype">double</span>)0, i=0; timeTaken &lt; timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)00249                 key.SignMessage(rng, message, len, signature);00250 00251         OutputResultOperations(name, <span class="stringliteral">"Signature"</span>, pc, i, timeTaken);00252 00253         <span class="keywordflow">if</span> (!pc &amp;&amp; key.GetMaterial().SupportsPrecomputation())00254         {00255                 key.AccessMaterial().Precompute(16);00256                 BenchMarkSigning(name, key, timeTotal, <span class="keyword">true</span>);00257         }00258 }00259 00260 <span class="keywordtype">void</span> BenchMarkVerification(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <a class="code" href="class_p_k___signer.html">PK_Signer</a> &amp;priv, <a class="code" href="class_p_k___verifier.html">PK_Verifier</a> &amp;pub, <span class="keywordtype">double</span> timeTotal, <span class="keywordtype">bool</span> pc=<span class="keyword">false</span>)00261 {

⌨️ 快捷键说明

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