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

📄 xtr_8h-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<a name="l00163"></a>00163                 <span class="keywordflow">return</span> <a class="code" href="class_abstract_ring.html#cbe859e24ea6ee1e22ed2a1261f7f9d0">AbstractRing&lt;GFP2Element&gt;::CascadeExponentiate</a>(a, emodp, b, edivp);<a name="l00164"></a>00164         }<a name="l00165"></a>00165 <a name="l00166"></a><a class="code" href="class_g_f_p2___o_n_b.html#a4c7a549af3a591f10f05bff645e9d38">00166</a>         <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &amp; <a class="code" href="class_g_f_p2___o_n_b.html#a4c7a549af3a591f10f05bff645e9d38">PthPower</a>(<span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &amp;a)<span class="keyword"> const</span><a name="l00167"></a>00167 <span class="keyword">        </span>{<a name="l00168"></a>00168                 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a> = a;<a name="l00169"></a>00169                 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>.<a class="code" href="class_integer.html#bf1e9c170e56841ce73d137c12675f9b">swap</a>(<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00170"></a>00170                 <span class="keywordflow">return</span> <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>;<a name="l00171"></a>00171         }<a name="l00172"></a>00172 <a name="l00173"></a><a class="code" href="class_g_f_p2___o_n_b.html#8d563d65da20e3adabe773e428d85056">00173</a>         <span class="keywordtype">void</span> <a class="code" href="class_g_f_p2___o_n_b.html#8d563d65da20e3adabe773e428d85056">RaiseToPthPower</a>(<a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &amp;a)<span class="keyword"> const</span><a name="l00174"></a>00174 <span class="keyword">        </span>{<a name="l00175"></a>00175                 a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>.<a class="code" href="class_integer.html#bf1e9c170e56841ce73d137c12675f9b">swap</a>(a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00176"></a>00176         }<a name="l00177"></a>00177 <a name="l00178"></a>00178         <span class="comment">// a^2 - 2a^p</span><a name="l00179"></a><a class="code" href="class_g_f_p2___o_n_b.html#114d4f5aae022c1b021aadc3698b8ee7">00179</a>         <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &amp; <a class="code" href="class_g_f_p2___o_n_b.html#114d4f5aae022c1b021aadc3698b8ee7">SpecialOperation1</a>(<span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &amp;a)<span class="keyword"> const</span><a name="l00180"></a>00180 <span class="keyword">        </span>{<a name="l00181"></a>00181                 assert(&amp;a != &amp;<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>);<a name="l00182"></a>00182                 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a> = <a class="code" href="class_g_f_p2___o_n_b.html#f0e2b0a96d4f5124ab43d5373c7057fe">Square</a>(a);<a name="l00183"></a>00183                 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Reduce(<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00184"></a>00184                 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Reduce(<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, a.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00185"></a>00185                 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Reduce(<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>);<a name="l00186"></a>00186                 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Reduce(<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, a.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>);<a name="l00187"></a>00187                 <span class="keywordflow">return</span> <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>;<a name="l00188"></a>00188         }<a name="l00189"></a>00189 <a name="l00190"></a>00190         <span class="comment">// x * z - y * z^p</span><a name="l00191"></a><a class="code" href="class_g_f_p2___o_n_b.html#082e11a05ea7d2db4b559783f4ee8cbe">00191</a>         <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &amp; <a class="code" href="class_g_f_p2___o_n_b.html#082e11a05ea7d2db4b559783f4ee8cbe">SpecialOperation2</a>(<span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &amp;x, <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &amp;y, <span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">Element</a> &amp;z)<span class="keyword"> const</span><a name="l00192"></a>00192 <span class="keyword">        </span>{<a name="l00193"></a>00193                 assert(&amp;x != &amp;<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a> &amp;&amp; &amp;y != &amp;<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a> &amp;&amp; &amp;z != &amp;<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>);<a name="l00194"></a>00194                 <a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Add(x.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, y.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>);<a name="l00195"></a>00195                 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Multiply(z.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Subtract(y.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, <a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a>));<a name="l00196"></a>00196                 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Accumulate(<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Multiply(z.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Subtract(<a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a>, x.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>)));<a name="l00197"></a>00197                 <a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Add(x.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, y.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>);<a name="l00198"></a>00198                 <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a> = <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Multiply(z.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Subtract(y.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, <a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a>));<a name="l00199"></a>00199                 <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Accumulate(<a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>, <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Multiply(z.<a class="code" href="class_g_f_p2_element.html#65778354421ad2da42fce4221e6da05c">c1</a>, <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>.Subtract(<a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a>, x.<a class="code" href="class_g_f_p2_element.html#1688b28610e1b080a9304daad7c73bbb">c2</a>)));<a name="l00200"></a>00200                 <span class="keywordflow">return</span> <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>;<a name="l00201"></a>00201         }<a name="l00202"></a>00202 <a name="l00203"></a>00203 <span class="keyword">protected</span>:<a name="l00204"></a><a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">00204</a>         <a class="code" href="class_g_f_p2___o_n_b.html#d3bffbe1a6c331daf56bb6ec51cbc294">BaseField</a> <a class="code" href="class_g_f_p2___o_n_b.html#12a3de839303bf309ed57d38659a85a9">modp</a>;<a name="l00205"></a><a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">00205</a>         <span class="keyword">mutable</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">GFP2Element</a> <a class="code" href="class_g_f_p2___o_n_b.html#4a8985727330598468dfbeb04cad772d">result</a>;<a name="l00206"></a><a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">00206</a>         <span class="keyword">mutable</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> <a class="code" href="class_g_f_p2___o_n_b.html#69c8bc73d2d4a07ba6df46b12c8e7913">t</a>;<a name="l00207"></a>00207 };<a name="l00208"></a>00208 <a name="l00209"></a>00209 <span class="keywordtype">void</span> XTR_FindPrimesAndGenerator(<a class="code" href="class_random_number_generator.html" title="interface for random number generators">RandomNumberGenerator</a> &amp;rng, <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;p, <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;q, <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">GFP2Element</a> &amp;g, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pbits, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> qbits);<a name="l00210"></a>00210 <a name="l00211"></a>00211 <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">GFP2Element</a> XTR_Exponentiate(<span class="keyword">const</span> <a class="code" href="class_g_f_p2_element.html" title="an element of GF(p^2)">GFP2Element</a> &amp;b, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;e, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;p);<a name="l00212"></a>00212 <a name="l00213"></a>00213 NAMESPACE_END<a name="l00214"></a>00214 <a name="l00215"></a>00215 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 1 11:11:26 2007 for Crypto++ by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address></body></html>

⌨️ 快捷键说明

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