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

📄 gf2n_8cpp-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00408"></a>00408         }<a name="l00409"></a>00409 <a name="l00410"></a>00410         <span class="keywordflow">if</span> (shiftWords)<a name="l00411"></a>00411         {<a name="l00412"></a>00412                 <span class="keywordflow">for</span> (i=0; i&lt;reg.<a class="code" href="class_sec_block.html#f5999bffe3193e62719cc0792b0282a7">size</a>()-shiftWords; i++)<a name="l00413"></a>00413                         reg[i] = reg[i+shiftWords];<a name="l00414"></a>00414                 <span class="keywordflow">for</span> (; i&lt;reg.<a class="code" href="class_sec_block.html#f5999bffe3193e62719cc0792b0282a7">size</a>(); i++)<a name="l00415"></a>00415                         reg[i] = 0;<a name="l00416"></a>00416         }<a name="l00417"></a>00417 <a name="l00418"></a>00418         <span class="keywordflow">return</span> *<span class="keyword">this</span>;<a name="l00419"></a>00419 }<a name="l00420"></a>00420 <a name="l00421"></a><a class="code" href="class_polynomial_mod2.html#a5058e89a823851c08fb11ab7f6449d0">00421</a> <a class="code" href="class_polynomial_mod2.html" title="Polynomial with Coefficients in GF(2).">PolynomialMod2</a> <a class="code" href="class_polynomial_mod2.html#a5058e89a823851c08fb11ab7f6449d0">PolynomialMod2::operator&lt;&lt;</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n)<span class="keyword"> const</span><a name="l00422"></a>00422 <span class="keyword"></span>{<a name="l00423"></a>00423         <a class="code" href="class_polynomial_mod2.html" title="Polynomial with Coefficients in GF(2).">PolynomialMod2</a> result(*<span class="keyword">this</span>);<a name="l00424"></a>00424         <span class="keywordflow">return</span> result&lt;&lt;=n;<a name="l00425"></a>00425 }<a name="l00426"></a>00426 <a name="l00427"></a><a class="code" href="class_polynomial_mod2.html#a752ba55ff8ac4050c1391d1dacfbc81">00427</a> <a class="code" href="class_polynomial_mod2.html" title="Polynomial with Coefficients in GF(2).">PolynomialMod2</a> <a class="code" href="class_polynomial_mod2.html#a752ba55ff8ac4050c1391d1dacfbc81">PolynomialMod2::operator&gt;&gt;</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n)<span class="keyword"> const</span><a name="l00428"></a>00428 <span class="keyword"></span>{<a name="l00429"></a>00429         <a class="code" href="class_polynomial_mod2.html" title="Polynomial with Coefficients in GF(2).">PolynomialMod2</a> result(*<span class="keyword">this</span>);<a name="l00430"></a>00430         <span class="keywordflow">return</span> result&gt;&gt;=n;<a name="l00431"></a>00431 }<a name="l00432"></a>00432 <a name="l00433"></a><a class="code" href="class_polynomial_mod2.html#c444b1db16f62393ba63ec16096664b2">00433</a> <span class="keywordtype">bool</span> <a class="code" href="class_polynomial_mod2.html#c444b1db16f62393ba63ec16096664b2">PolynomialMod2::operator!</a>()<span class="keyword"> const</span><a name="l00434"></a>00434 <span class="keyword"></span>{<a name="l00435"></a>00435         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i=0; i&lt;reg.<a class="code" href="class_sec_block.html#f5999bffe3193e62719cc0792b0282a7">size</a>(); i++)<a name="l00436"></a>00436                 <span class="keywordflow">if</span> (reg[i]) <span class="keywordflow">return</span> <span class="keyword">false</span>;<a name="l00437"></a>00437         <span class="keywordflow">return</span> <span class="keyword">true</span>;<a name="l00438"></a>00438 }<a name="l00439"></a>00439 <a name="l00440"></a><a class="code" href="class_polynomial_mod2.html#5a798b2c21aa6d39ec33ff8b490e5078">00440</a> <span class="keywordtype">bool</span> <a class="code" href="class_polynomial_mod2.html#5a798b2c21aa6d39ec33ff8b490e5078">PolynomialMod2::Equals</a>(<span class="keyword">const</span> <a class="code" href="class_polynomial_mod2.html" title="Polynomial with Coefficients in GF(2).">PolynomialMod2</a> &amp;rhs)<span class="keyword"> const</span><a name="l00441"></a>00441 <span class="keyword"></span>{<a name="l00442"></a>00442         <span class="keywordtype">size_t</span> i, smallerSize = STDMIN(reg.<a class="code" href="class_sec_block.html#f5999bffe3193e62719cc0792b0282a7">size</a>(), rhs.<a class="code" href="class_polynomial_mod2.html#68853b1b5d6d0361cd0b16f1889466a4">reg</a>.<a class="code" href="class_sec_block.html#f5999bffe3193e62719cc0792b0282a7">size</a>());<a name="l00443"></a>00443 <a name="l00444"></a>00444         <span class="keywordflow">for</span> (i=0; i&lt;smallerSize; i++)<a name="l00445"></a>00445                 <span class="keywordflow">if</span> (reg[i] != rhs.<a class="code" href="class_polynomial_mod2.html#68853b1b5d6d0361cd0b16f1889466a4">reg</a>[i]) <span class="keywordflow">return</span> <span class="keyword">false</span>;<a name="l00446"></a>00446 <a name="l00447"></a>00447         for (i=smallerSize; i&lt;reg.<a class="code" href="class_sec_block.html#f5999bffe3193e62719cc0792b0282a7">size</a>(); i++)<a name="l00448"></a>00448                 <span class="keywordflow">if</span> (reg[i] != 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;<a name="l00449"></a>00449 <a name="l00450"></a>00450         <span class="keywordflow">for</span> (i=smallerSize; i&lt;rhs.<a class="code" href="class_polynomial_mod2.html#68853b1b5d6d0361cd0b16f1889466a4">reg</a>.<a class="code" href="class_sec_block.html#f5999bffe3193e62719cc0792b0282a7">size</a>(); i++)<a name="l00451"></a>00451                 <span class="keywordflow">if</span> (rhs.<a class="code" href="class_polynomial_mod2.html#68853b1b5d6d0361cd0b16f1889466a4">reg</a>[i] != 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;<a name="l00452"></a>00452 <a name="l00453"></a>00453         <span class="keywordflow">return</span> <span class="keyword">true</span>;<a name="l00454"></a>00454 }<a name="l00455"></a>00455 <a name="l00456"></a><a class="code" href="class_polynomial_mod2.html#e2b80f2028ca16b9a75a434e1fb24424">00456</a> std::ostream&amp; <a class="code" href="class_polynomial_mod2.html#a5058e89a823851c08fb11ab7f6449d0">operator&lt;&lt;</a>(std::ostream&amp; out, <span class="keyword">const</span> <a class="code" href="class_polynomial_mod2.html" title="Polynomial with Coefficients in GF(2).">PolynomialMod2</a> &amp;a)<a name="l00457"></a>00457 {<a name="l00458"></a>00458         <span class="comment">// Get relevant conversion specifications from ostream.</span><a name="l00459"></a>00459         <span class="keywordtype">long</span> f = out.flags() &amp; std::ios::basefield;     <span class="comment">// Get base digits.</span><a name="l00460"></a>00460         <span class="keywordtype">int</span> bits, block;<a name="l00461"></a>00461         <span class="keywordtype">char</span> suffix;<a name="l00462"></a>00462         <span class="keywordflow">switch</span>(f)<a name="l00463"></a>00463         {<a name="l00464"></a>00464         <span class="keywordflow">case</span> std::ios::oct :<a name="l00465"></a>00465                 bits = 3;<a name="l00466"></a>00466                 block = 4;<a name="l00467"></a>00467                 suffix = <span class="charliteral">'o'</span>;<a name="l00468"></a>00468                 <span class="keywordflow">break</span>;<a name="l00469"></a>00469         <span class="keywordflow">case</span> std::ios::hex :<a name="l00470"></a>00470                 bits = 4;<a name="l00471"></a>00471                 block = 2;<a name="l00472"></a>00472                 suffix = <span class="charliteral">'h'</span>;<a name="l00473"></a>00473                 <span class="keywordflow">break</span>;<a name="l00474"></a>00474         <span class="keywordflow">default</span> :<a name="l00475"></a>00475                 bits = 1;<a name="l00476"></a>00476                 block = 8;<a name="l00477"></a>00477                 suffix = <span class="charliteral">'b'</span>;<a name="l00478"></a>00478         }<a name="l00479"></a>00479 <a name="l00480"></a>00480         <span class="keywordflow">if</span> (!a)<a name="l00481"></a>00481                 <span class="keywordflow">return</span> out &lt;&lt; <span class="charliteral">'0'</span> &lt;&lt; suffix;<a name="l00482"></a>00482 <a name="l00483"></a>00483         <a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;char&gt;</a> s(a.<a class="code" href="class_polynomial_mod2.html#86f4e8502eacf95345d18a6240a217b2" title="number of significant bits = Degree() + 1">BitCount</a>()/bits+1);<a name="l00484"></a>00484         <span class="keywordtype">unsigned</span> i;<a name="l00485"></a>00485         <span class="keyword">const</span> <span class="keywordtype">char</span> vec[]=<span class="stringliteral">"0123456789ABCDEF"</span>;<a name="l00486"></a>00486 <a name="l00487"></a>00487         <span class="keywordflow">for</span> (i=0; i*bits &lt; a.<a class="code" href="class_polynomial_mod2.html#86f4e8502eacf95345d18a6240a217b2" title="number of significant bits = Degree() + 1">BitCount</a>(); i++)<a name="l00488"></a>00488         {<a name="l00489"></a>00489                 <span class="keywordtype">int</span> digit=0;<a name="l00490"></a>00490                 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j&lt;bits; j++)<a name="l00491"></a>00491                         digit |= a[i*bits+j] &lt;&lt; j;<a name="l00492"></a>00492                 s[i]=vec[digit];<a name="l00493"></a>00493         }<a name="l00494"></a>00494 <a name="l00495"></a>00495         <span class="keywordflow">while</span> (i--)<a name="l00496"></a>00496         {<a name="l00497"></a>00497                 out &lt;&lt; s[i];<a name="l00498"></a>00498                 <span class="keywordflow">if</span> (i &amp;&amp; (i%block)==0)<a name="l00499"></a>00499                         out &lt;&lt; <span class="charliteral">','</span>;<a name="l00500"></a>00500         }<a name="l00501"></a>00501 <a name="l00502"></a>00502         <span class="keywordflow">return</span> out &lt;&lt; suffix;<a name="l00503"></a>00503 }<a name="l00504"></a>00504 <a name="l00505"></a><a class="code" href="class_polynomial_mod2.html#3940dec2ab787489ad4ce67013fe4611">00505</a> <a class="code" href="class_polynomial_mod2.html" title="Polynomial with Coefficients in GF(2).">PolynomialMod2</a> <a class="code" href="class_polynomial_mod2.html#3940dec2ab787489ad4ce67013fe4611" title="greatest common divisor">PolynomialMod2::Gcd</a>(<span class="keyword">const</span> <a class="code" href="class_polynomial_mod2.html" title="Polynomial with Coefficients in GF(2).">PolynomialMod2</a> &amp;a, <span class="keyword">const</span> <a class="code" href="class_polynomial_mod2.html" title="Polynomial with Coefficients in GF(2).">PolynomialMod2</a> &amp;b)<a name="l00506"></a>00506 {<a name="l00507"></a>00507         <span class="keywordflow">return</span> <a class="code" href="class_euclidean_domain_of.html" title="EuclideanDomainOf.">EuclideanDomainOf&lt;PolynomialMod2&gt;</a>().<a class="code" href="class_polynomial_mod2.html#3940dec2ab787489ad4ce67013fe4611" title="greatest common divisor">Gcd</a>(a, b);<a name="l00508"></a>00508 }<a name="l00509"></a>00509 <a name="l00510"></a><a class="code" href="class_polynomial_mod2.html#e8005d38604e28556889ea89412fe33f">00510</a> <a class="code" href="class_polynomial_mod2.html" title="Polynomial with Coefficients in GF(2).">PolynomialMod2</a> <a class="code" href="class_polynomial_mod2.html#e8005d38604e28556889ea89412fe33f" title="calculate multiplicative inverse of *this mod n">Polynomi

⌨️ 快捷键说明

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