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

📄 gfpcrypt_8h-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00051"></a>00051         <span class="keywordtype">bool</span> ValidateElement(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> level, <span class="keyword">const</span> Integer &amp;element, <span class="keyword">const</span> <a class="code" href="class_d_l___fixed_base_precomputation.html">DL_FixedBasePrecomputation&lt;Integer&gt;</a> *precomp) <span class="keyword">const</span>;<a name="l00052"></a><a class="code" href="class_d_l___group_parameters___integer_based.html#c1cec62d442856c46c536e2ae1e0328a">00052</a>         <span class="keywordtype">bool</span> FastSubgroupCheckAvailable()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetCofactor() == 2;}<a name="l00053"></a><a class="code" href="class_d_l___group_parameters___integer_based.html#9ceb27f7c51beae7116052ab6358d5e3">00053</a>         <span class="keywordtype">void</span> EncodeElement(<span class="keywordtype">bool</span> reversible, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Element</a> &amp;element, byte *encoded)<span class="keyword"> const</span><a name="l00054"></a>00054 <span class="keyword">                </span>{element.<a class="code" href="class_integer.html#c12ea467de9a609b86ec03d8cb8837e4" title="encode in big-endian format">Encode</a>(encoded, GetModulus().ByteCount());}<a name="l00055"></a><a class="code" href="class_d_l___group_parameters___integer_based.html#9786b983ff7cd1f2152ebf8f319b777d">00055</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetEncodedElementSize(<span class="keywordtype">bool</span> reversible)<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetModulus().ByteCount();}<a name="l00056"></a>00056         Integer DecodeElement(<span class="keyword">const</span> byte *encoded, <span class="keywordtype">bool</span> checkForGroupMembership) <span class="keyword">const</span>;<a name="l00057"></a><a class="code" href="class_d_l___group_parameters___integer_based.html#49f95d1c429bb4eda7b7ce59c9ac8289">00057</a>         Integer ConvertElementToInteger(<span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Element</a> &amp;element)<span class="keyword"> const</span><a name="l00058"></a>00058 <span class="keyword">                </span>{<span class="keywordflow">return</span> element;}<a name="l00059"></a>00059         Integer GetMaxExponent() <span class="keyword">const</span>;<a name="l00060"></a><a class="code" href="class_d_l___group_parameters___integer_based.html#c8aefa5fb1191a15136e1a5473900517">00060</a>         <span class="keyword">static</span> std::string CRYPTOPP_API StaticAlgorithmNamePrefix() {<span class="keywordflow">return</span> <span class="stringliteral">""</span>;}<a name="l00061"></a>00061 <a name="l00062"></a>00062         <a class="code" href="class_o_i_d.html" title="Object Identifier.">OID</a> GetAlgorithmID() <span class="keyword">const</span>;<a name="l00063"></a>00063 <a name="l00064"></a>00064         <span class="keyword">virtual</span> <span class="keyword">const</span> Integer &amp; GetModulus() <span class="keyword">const</span> =0;<a name="l00065"></a>00065         <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetModulusAndSubgroupGenerator(<span class="keyword">const</span> Integer &amp;p, <span class="keyword">const</span> Integer &amp;g) =0;<a name="l00066"></a>00066 <a name="l00067"></a><a class="code" href="class_d_l___group_parameters___integer_based.html#5a842eff8fb870a0c9a61831a9865342">00067</a>         <span class="keywordtype">void</span> SetSubgroupOrder(<span class="keyword">const</span> Integer &amp;q)<a name="l00068"></a>00068                 {m_q = q; ParametersChanged();}<a name="l00069"></a>00069 <a name="l00070"></a>00070 <span class="keyword">protected</span>:<a name="l00071"></a><a class="code" href="class_d_l___group_parameters___integer_based.html#05c2b65749d0357845599a7d434e3903">00071</a>         Integer ComputeGroupOrder(<span class="keyword">const</span> Integer &amp;modulus)<span class="keyword"> const</span><a name="l00072"></a>00072 <span class="keyword">                </span>{<span class="keywordflow">return</span> modulus-(GetFieldType() == 1 ? 1 : -1);}<a name="l00073"></a>00073 <a name="l00074"></a>00074         <span class="comment">// GF(p) = 1, GF(p^2) = 2</span><a name="l00075"></a>00075         <span class="keyword">virtual</span> <span class="keywordtype">int</span> GetFieldType() <span class="keyword">const</span> =0;<a name="l00076"></a>00076         <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetDefaultSubgroupOrderSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> modulusSize) <span class="keyword">const</span>;<a name="l00077"></a>00077 <a name="l00078"></a>00078 <span class="keyword">private</span>:<a name="l00079"></a>00079         Integer m_q;<a name="l00080"></a>00080 };<a name="l00081"></a>00081 <span class="comment"></span><a name="l00082"></a>00082 <span class="comment">//! _</span><a name="l00083"></a>00083 <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> GROUP_PRECOMP, <span class="keyword">class</span> BASE_PRECOMP = DL_FixedBasePrecomputationImpl&lt;CPP_TYPENAME GROUP_PRECOMP::Element&gt; &gt;<a name="l00084"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html">00084</a> <span class="keyword">class </span>CRYPTOPP_NO_VTABLE <a class="code" href="class_d_l___group_parameters___integer_based_impl.html" title="_">DL_GroupParameters_IntegerBasedImpl</a> : <span class="keyword">public</span> <a class="code" href="class_d_l___group_parameters_impl.html" title="_">DL_GroupParametersImpl</a>&lt;GROUP_PRECOMP, BASE_PRECOMP, DL_GroupParameters_IntegerBased&gt;<a name="l00085"></a>00085 {<a name="l00086"></a>00086         <span class="keyword">typedef</span> <a class="code" href="class_d_l___group_parameters___integer_based_impl.html" title="_">DL_GroupParameters_IntegerBasedImpl&lt;GROUP_PRECOMP, BASE_PRECOMP&gt;</a> <a class="code" href="class_d_l___group_parameters___integer_based.html" title="_">ThisClass</a>;<a name="l00087"></a>00087 <a name="l00088"></a>00088 <span class="keyword">public</span>:<a name="l00089"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html#0d2ec78e9a74ec651474b995e931aa74">00089</a>         <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">GROUP_PRECOMP::Element</a> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Element</a>;<a name="l00090"></a>00090 <a name="l00091"></a>00091         <span class="comment">// GeneratibleCryptoMaterial interface</span><a name="l00092"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html#a017775352184937c5f064a4776d587e">00092</a>         <span class="keywordtype">bool</span> GetVoidValue(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> std::type_info &amp;valueType, <span class="keywordtype">void</span> *pValue)<span class="keyword"> const</span><a name="l00093"></a>00093 <span class="keyword">                </span>{<span class="keywordflow">return</span> GetValueHelper&lt;DL_GroupParameters_IntegerBased&gt;(<span class="keyword">this</span>, name, valueType, pValue).Assignable();}<a name="l00094"></a>00094 <a name="l00095"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html#0d668d2148cf57078a93f3a5a4b4ac2a">00095</a>         <span class="keywordtype">void</span> AssignFrom(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> &amp;source)<a name="l00096"></a>00096                 {AssignFromHelper&lt;DL_GroupParameters_IntegerBased&gt;(<span class="keyword">this</span>, source);}<a name="l00097"></a>00097 <a name="l00098"></a>00098         <span class="comment">// DL_GroupParameters</span><a name="l00099"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html#3f87996b08487e46f26d2915881c10c9">00099</a>         <span class="keyword">const</span> <a class="code" href="class_d_l___fixed_base_precomputation.html">DL_FixedBasePrecomputation&lt;Element&gt;</a> &amp; <a class="code" href="class_d_l___group_parameters_impl.html#d87e2b22a736dda0cf6f5b87bcb7055d">GetBasePrecomputation</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> this-&gt;m_gpc;}<a name="l00100"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html#a6f498af673543a7569d67e1c874e90c">00100</a>         <a class="code" href="class_d_l___fixed_base_precomputation.html">DL_FixedBasePrecomputation&lt;Element&gt;</a> &amp; <a class="code" href="class_d_l___group_parameters_impl.html#e697d28fa013dd60f78b943cdd4fa973">AccessBasePrecomputation</a>() {<span class="keywordflow">return</span> this-&gt;m_gpc;}<a name="l00101"></a>00101 <a name="l00102"></a>00102         <span class="comment">// IntegerGroupParameters</span><a name="l00103"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html#2c3b85d7565e222bb5492ae7d141ec85">00103</a>         <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp; GetModulus()<span class="keyword"> const </span>{<span class="keywordflow">return</span> this-&gt;m_groupPrecomputation.GetModulus();}<a name="l00104"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html#2573d91fcf24507c3dbb4016693c4fcd">00104</a>     <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp; GetGenerator()<span class="keyword"> const </span>{<span class="keywordflow">return</span> this-&gt;m_gpc.GetBase(this-&gt;GetGroupPrecomputation());}<a name="l00105"></a>00105 <a name="l00106"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html#42ef80eabc3ef9d5735f97447b6c765c">00106</a>         <span class="keywordtype">void</span> SetModulusAndSubgroupGenerator(<span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;p, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;g)         <span class="comment">// these have to be set together</span><a name="l00107"></a>00107                 {this-&gt;m_groupPrecomputation.SetModulus(p); this-&gt;m_gpc.SetBase(this-&gt;GetGroupPrecomputation(), g); this-&gt;ParametersChanged();}<a name="l00108"></a>00108 <a name="l00109"></a>00109         <span class="comment">// non-inherited</span><a name="l00110"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html#b7edd90ec71ac08615204b9b952bf72f">00110</a>         <span class="keywordtype">bool</span> <a class="code" href="gf2n_8h.html#22c25c181c409600aa2e4bf1067ac47a">operator==</a>(<span class="keyword">const</span> <a class="code" href="class_d_l___group_parameters___integer_based_impl.html" title="_">DL_GroupParameters_IntegerBasedImpl&lt;GROUP_PRECOMP, BASE_PRECOMP&gt;</a> &amp;rhs)<span class="keyword"> const</span><a name="l00111"></a>00111 <span class="keyword">                </span>{<span class="keywordflow">return</span> GetModulus() == rhs.<a class="code" href="class_d_l___group_parameters___integer_based_impl.html#2c3b85d7565e222bb5492ae7d141ec85">GetModulus</a>() &amp;&amp; GetGenerator() == rhs.<a class="code" href="class_d_l___group_parameters___integer_based_impl.html#2573d91fcf24507c3dbb4016693c4fcd">GetGenerator</a>() &amp;&amp; this-&gt;GetSubgroupOrder() == rhs.<a class="code" href="class_d_l___group_parameters___integer_based.html#e6eb7fd2937f5eee9740d0db173f0475">GetSubgroupOrder</a>();}<a name="l00112"></a><a class="code" href="class_d_l___group_parameters___integer_based_impl.html#205bcf9ef811624a1755f356575b6edb">00112</a>         <span class="keywordtype">bool</span> <a class="code" href="gf2n_8h.html#98d9036c415975aa2f0fc09fab285459">operator!=</a>(<span class="keyword">const</span> <a class="code" href="class_d_l___group_parameters___integer_based_impl.html" title="_">DL_GroupParameters_IntegerBasedImpl&lt;GROUP_PRECOMP, BASE_PRECOMP&gt;</a> &amp;rhs)<span class="keyword"> const</span><a name="l00113"></a>00113 <span class="keyword">                </span>{<span class="keywordflow">return</span> !<a class="code" href="gf2n_8h.html#22c25c181c409600aa2e4bf1067ac47a">operator==</a>(rhs);}<a name="l00114"></a>00114 };<a name="l00115"></a>00115 <a name="l00116"></a>00116 CRYPTOPP_DLL_TEMPLATE_CLASS <a class="code" href="class_d_l___group_parameters___integer_based_impl.html" title="_">DL_GroupParameters_IntegerBasedImpl&lt;ModExpPrecomputation&gt;</a>;<a name="l00117"></a>00117 <span class="comment"></span><a name="l00118"></a>00118 <span class="comment">//! GF(p) group parameters</span><a name="l00119"></a><a class="code" href="class_d_l___group_parameters___g_f_p.html">00119</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL <a class="code" href="class_d_l___group_parameters___g_f_p.html" title="GF(p) group parameters.">DL_GroupParameters_GFP</a> : <span class="keyword">public</span> <a class="code" href="class_d_l___group_parameters___integer_based_impl.html" title="_">DL_GroupParameters_IntegerBasedImpl</a>&lt;ModExpPrecomputation&gt;<a name="l00120"></a>00120 {<a name="l00121"></a>00121 <span class="keyword">public</span>:

⌨️ 快捷键说明

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