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

📄 iterhash_8h-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<a name="l00051"></a>00051 };<a name="l00052"></a>00052 <span class="comment"></span><a name="l00053"></a>00053 <span class="comment">//! _</span><a name="l00054"></a>00054 <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T_HashWordType, <span class="keyword">class</span> T_Endianness, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> T_BlockSize, <span class="keyword">class</span> T_Base = HashTransformation&gt;<a name="l00055"></a><a class="code" href="class_iterated_hash.html">00055</a> <span class="keyword">class </span>CRYPTOPP_NO_VTABLE IteratedHash : <span class="keyword">public</span> <a class="code" href="class_iterated_hash_base.html" title="_">IteratedHashBase</a>&lt;T_HashWordType, T_Base&gt;<a name="l00056"></a>00056 {<a name="l00057"></a>00057 <span class="keyword">public</span>:<a name="l00058"></a><a class="code" href="class_iterated_hash.html#6ec15728121293aef70ca8b30b2e7e7a">00058</a>         <span class="keyword">typedef</span> T_Endianness <a class="code" href="struct_enum_to_type.html">ByteOrderClass</a>;<a name="l00059"></a><a class="code" href="class_iterated_hash.html#ce0350088eea8679cbe23668d2498c07">00059</a>         <span class="keyword">typedef</span> T_HashWordType HashWordType;<a name="l00060"></a>00060 <a name="l00061"></a><a class="code" href="class_iterated_hash.html#c5b97a3f0d607c914d025581e0ecf80e">00061</a>         CRYPTOPP_CONSTANT(BLOCKSIZE = T_BlockSize)<a name="l00062"></a>00062         <span class="comment">// BCB2006 workaround: can't use BLOCKSIZE here</span><a name="l00063"></a><a class="code" href="class_iterated_hash.html#66e54da4b22f08f90e4df56fc486c0cc">00063</a>         CRYPTOPP_COMPILE_ASSERT((T_BlockSize &amp; (T_BlockSize - 1)) == 0);        <span class="comment">// blockSize is a power of 2</span><a name="l00064"></a><a class="code" href="class_iterated_hash.html#76cb174a108aa1178e444681c0d8c2ff">00064</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BlockSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> T_BlockSize;}<a name="l00065"></a>00065 <a name="l00066"></a><a class="code" href="class_iterated_hash.html#26df02878f3fa09146154f9d6eaba1a4">00066</a>         <a class="code" href="cryptlib_8h.html#aeb92d42f5a6e27b8ba19f18d69d142b">ByteOrder</a> GetByteOrder()<span class="keyword"> const </span>{<span class="keywordflow">return</span> T_Endianness::ToEnum();}<a name="l00067"></a>00067 <a name="l00068"></a><a class="code" href="class_iterated_hash.html#394a6ed0dd2a885652cd203ad4fa5fe0">00068</a>         <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> CorrectEndianess(HashWordType *out, <span class="keyword">const</span> HashWordType *in, <span class="keywordtype">size_t</span> byteCount)<a name="l00069"></a>00069         {<a name="l00070"></a>00070                 ConditionalByteReverse(T_Endianness::ToEnum(), out, in, byteCount);<a name="l00071"></a>00071         }<a name="l00072"></a>00072 <a name="l00073"></a>00073 <span class="keyword">protected</span>:<a name="l00074"></a><a class="code" href="class_iterated_hash.html#a7561b749600677c9a28bcf4d943e272">00074</a>         T_HashWordType* DataBuf() {<span class="keywordflow">return</span> this-&gt;m_data;}<a name="l00075"></a><a class="code" href="class_iterated_hash.html#d1d059e2cba2115f403befa9e6c070da">00075</a>         <a class="code" href="class_fixed_size_sec_block.html" title="a SecBlock with fixed size, allocated statically">FixedSizeSecBlock</a>&lt;T_HashWordType, T_BlockSize/<span class="keyword">sizeof</span>(T_HashWordType)&gt; m_data;<a name="l00076"></a>00076 };<a name="l00077"></a>00077 <span class="comment"></span><a name="l00078"></a>00078 <span class="comment">//! _</span><a name="l00079"></a>00079 <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T_HashWordType, <span class="keyword">class</span> T_Endianness, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> T_BlockSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> T_StateSize, <span class="keyword">class</span> T_Transform, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> T_DigestSize = 0&gt;<a name="l00080"></a><a class="code" href="class_iterated_hash_with_static_transform.html">00080</a> <span class="keyword">class </span>CRYPTOPP_NO_VTABLE IteratedHashWithStaticTransform<a name="l00081"></a>00081         : <span class="keyword">public</span> <a class="code" href="class_clonable_impl.html" title="_">ClonableImpl</a>&lt;T_Transform, AlgorithmImpl&lt;IteratedHash&lt;T_HashWordType, T_Endianness, T_BlockSize&gt;, T_Transform&gt; &gt;<a name="l00082"></a>00082 {<a name="l00083"></a>00083 <span class="keyword">public</span>:<a name="l00084"></a><a class="code" href="class_iterated_hash_with_static_transform.html#86286d03ba76ccdd7bf3007088250859">00084</a>         CRYPTOPP_CONSTANT(DIGESTSIZE = T_DigestSize ? T_DigestSize : T_StateSize)<a name="l00085"></a><a class="code" href="class_iterated_hash_with_static_transform.html#f308600222696a01464a8e93bc2c00c0">00085</a>         unsigned <span class="keywordtype">int</span> DigestSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> DIGESTSIZE;};<a name="l00086"></a>00086 <a name="l00087"></a>00087 <span class="keyword">protected</span>:<a name="l00088"></a><a class="code" href="class_iterated_hash_with_static_transform.html#1149dfe3d5b5e076e240da7bd85751fa">00088</a>         IteratedHashWithStaticTransform() {this-&gt;Init();}<a name="l00089"></a><a class="code" href="class_iterated_hash_with_static_transform.html#9917c50cbb1b92b5ceaff6cb80b5e3c1">00089</a>         <span class="keywordtype">void</span> HashEndianCorrectedBlock(<span class="keyword">const</span> T_HashWordType *data) {T_Transform::Transform(this-&gt;m_state, data);}<a name="l00090"></a><a class="code" href="class_iterated_hash_with_static_transform.html#b32f1ef07ad14b8456247b15abc5f12d">00090</a>         <span class="keywordtype">void</span> Init() {T_Transform::InitState(this-&gt;m_state);}<a name="l00091"></a>00091 <a name="l00092"></a><a class="code" href="class_iterated_hash_with_static_transform.html#f214e6d50f9123da957bee4261a97930">00092</a>         T_HashWordType* StateBuf() {<span class="keywordflow">return</span> this-&gt;m_state;}<a name="l00093"></a><a class="code" href="class_iterated_hash_with_static_transform.html#90c715c25bcbb9978a083b3da3c73013">00093</a>         <a class="code" href="class_fixed_size_sec_block.html" title="a SecBlock with fixed size, allocated statically">FixedSizeSecBlock</a>&lt;T_HashWordType, T_BlockSize/<span class="keyword">sizeof</span>(T_HashWordType)&gt; m_state;<a name="l00094"></a>00094 };<a name="l00095"></a>00095 <a name="l00096"></a>00096 NAMESPACE_END<a name="l00097"></a>00097 <a name="l00098"></a>00098 <span class="preprocessor">#ifdef CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES</span><a name="l00099"></a>00099 <span class="preprocessor"></span><span class="preprocessor">#include "iterhash.cpp"</span><a name="l00100"></a>00100 <span class="preprocessor">#endif</span><a name="l00101"></a>00101 <span class="preprocessor"></span><a name="l00102"></a>00102 NAMESPACE_BEGIN(CryptoPP)<a name="l00103"></a>00103 <a name="l00104"></a>00104 <span class="preprocessor">#ifdef WORD64_AVAILABLE</span><a name="l00105"></a>00105 <span class="preprocessor"></span>CRYPTOPP_DLL_TEMPLATE_CLASS <a class="code" href="class_iterated_hash_base.html" title="_">IteratedHashBase&lt;word64, HashTransformation&gt;</a>;<a name="l00106"></a>00106 CRYPTOPP_STATIC_TEMPLATE_CLASS <a class="code" href="class_iterated_hash_base.html" title="_">IteratedHashBase&lt;word64, MessageAuthenticationCode&gt;</a>;<a name="l00107"></a>00107 <span class="preprocessor">#endif</span><a name="l00108"></a>00108 <span class="preprocessor"></span><a name="l00109"></a>00109 CRYPTOPP_DLL_TEMPLATE_CLASS <a class="code" href="class_iterated_hash_base.html" title="_">IteratedHashBase&lt;word32, HashTransformation&gt;</a>;<a name="l00110"></a>00110 CRYPTOPP_STATIC_TEMPLATE_CLASS <a class="code" href="class_iterated_hash_base.html" title="_">IteratedHashBase&lt;word32, MessageAuthenticationCode&gt;</a>;<a name="l00111"></a>00111 <a name="l00112"></a>00112 NAMESPACE_END<a name="l00113"></a>00113 <a name="l00114"></a>00114 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 1 11:11:22 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 + -