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

📄 wake_8cpp-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<a name="l00056"></a>00056           <a class="code" href="class_w_a_k_e___base.html#ecb148b270b8b42cc734a3f0e5494c03">t</a>[p]=<a class="code" href="class_w_a_k_e___base.html#ecb148b270b8b42cc734a3f0e5494c03">t</a>[y=byte(<a class="code" href="class_w_a_k_e___base.html#ecb148b270b8b42cc734a3f0e5494c03">t</a>[p^y]^y)] ;  <span class="comment">// and other digits</span><a name="l00057"></a>00057           <a class="code" href="class_w_a_k_e___base.html#ecb148b270b8b42cc734a3f0e5494c03">t</a>[y]=<a class="code" href="class_w_a_k_e___base.html#ecb148b270b8b42cc734a3f0e5494c03">t</a>[p+1] ;  }<a name="l00058"></a>00058 }<a name="l00059"></a>00059 <a name="l00060"></a>00060 <span class="keyword">template</span> &lt;<span class="keyword">class</span> B&gt;<a name="l00061"></a><a class="code" href="class_w_a_k_e___policy.html#0fa7e4a1a3a6c0915b4b2cf058bff828">00061</a> <span class="keywordtype">void</span> <a class="code" href="class_w_a_k_e___policy.html#0fa7e4a1a3a6c0915b4b2cf058bff828">WAKE_Policy&lt;B&gt;::CipherSetKey</a>(<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;params, <span class="keyword">const</span> byte *key, <span class="keywordtype">size_t</span> length)<a name="l00062"></a>00062 {<a name="l00063"></a>00063         word32 k0, k1, k2, k3;<a name="l00064"></a>00064         <a class="code" href="struct_block_get_and_put.html#07781cc0817613fe47e8070999cf4b95">BlockGetAndPut&lt;word32, BigEndian, false&gt;::Get</a>(key)(<a class="code" href="class_w_a_k_e___base.html#9cf8a186e14f34bfa254d5aafa871685">r3</a>)(<a class="code" href="class_w_a_k_e___base.html#c83dd2cecc413746bf885a013dd59cf4">r4</a>)(<a class="code" href="class_w_a_k_e___base.html#e14a869ec1e12e8c72de0f8180dc2554">r5</a>)(<a class="code" href="class_w_a_k_e___base.html#46edb9cd7b79811e53a6b1be7a7f7e0f">r6</a>)(k0)(k1)(k2)(k3);<a name="l00065"></a>00065         <a class="code" href="class_w_a_k_e___base.html#fb30b5fddf84936e0a6a62a62cf4bb6e">GenKey</a>(k0, k1, k2, k3);<a name="l00066"></a>00066 }<a name="l00067"></a>00067 <a name="l00068"></a>00068 <span class="comment">// CFB</span><a name="l00069"></a>00069 <span class="keyword">template</span> &lt;<span class="keyword">class</span> B&gt;<a name="l00070"></a><a class="code" href="class_w_a_k_e___policy.html#158079e17e13806bd00280102bd7e994">00070</a> <span class="keywordtype">void</span> <a class="code" href="class_w_a_k_e___policy.html#158079e17e13806bd00280102bd7e994">WAKE_Policy&lt;B&gt;::Iterate</a>(byte *output, <span class="keyword">const</span> byte *input, <a class="code" href="cryptlib_8h.html#353ccabf5ddc119a6a33e92f7b9961c7" title="used to specify a direction for a cipher to operate in (encrypt or decrypt)">CipherDir</a> dir, <span class="keywordtype">size_t</span> iterationCount)<a name="l00071"></a>00071 {<a name="l00072"></a>00072         RegisterOutput&lt;B&gt; registerOutput(output, input, dir);<a name="l00073"></a>00073 <a name="l00074"></a>00074         <span class="keywordflow">while</span> (iterationCount--)<a name="l00075"></a>00075         {<a name="l00076"></a>00076                 <a class="code" href="class_w_a_k_e___base.html#9cf8a186e14f34bfa254d5aafa871685">r3</a> = <a class="code" href="class_w_a_k_e___base.html#218ffc8439a10e4415c8d421ebed882f">M</a>(<a class="code" href="class_w_a_k_e___base.html#9cf8a186e14f34bfa254d5aafa871685">r3</a>, ConditionalByteReverse(B::ToEnum(), <a class="code" href="class_w_a_k_e___base.html#46edb9cd7b79811e53a6b1be7a7f7e0f">r6</a>));<a name="l00077"></a>00077                 <a class="code" href="class_w_a_k_e___base.html#c83dd2cecc413746bf885a013dd59cf4">r4</a> = <a class="code" href="class_w_a_k_e___base.html#218ffc8439a10e4415c8d421ebed882f">M</a>(<a class="code" href="class_w_a_k_e___base.html#c83dd2cecc413746bf885a013dd59cf4">r4</a>, <a class="code" href="class_w_a_k_e___base.html#9cf8a186e14f34bfa254d5aafa871685">r3</a>);<a name="l00078"></a>00078                 <a class="code" href="class_w_a_k_e___base.html#e14a869ec1e12e8c72de0f8180dc2554">r5</a> = <a class="code" href="class_w_a_k_e___base.html#218ffc8439a10e4415c8d421ebed882f">M</a>(<a class="code" href="class_w_a_k_e___base.html#e14a869ec1e12e8c72de0f8180dc2554">r5</a>, <a class="code" href="class_w_a_k_e___base.html#c83dd2cecc413746bf885a013dd59cf4">r4</a>);<a name="l00079"></a>00079                 <a class="code" href="class_w_a_k_e___base.html#46edb9cd7b79811e53a6b1be7a7f7e0f">r6</a> = <a class="code" href="class_w_a_k_e___base.html#218ffc8439a10e4415c8d421ebed882f">M</a>(<a class="code" href="class_w_a_k_e___base.html#46edb9cd7b79811e53a6b1be7a7f7e0f">r6</a>, <a class="code" href="class_w_a_k_e___base.html#e14a869ec1e12e8c72de0f8180dc2554">r5</a>);<a name="l00080"></a>00080                 registerOutput(<a class="code" href="class_w_a_k_e___base.html#46edb9cd7b79811e53a6b1be7a7f7e0f">r6</a>);<a name="l00081"></a>00081         }<a name="l00082"></a>00082 }<a name="l00083"></a>00083 <a name="l00084"></a>00084 <span class="comment">// OFB</span><a name="l00085"></a>00085 <span class="keyword">template</span> &lt;<span class="keyword">class</span> B&gt;<a name="l00086"></a><a class="code" href="class_w_a_k_e___policy.html#110f02ab36e4e4a2fc1ca6250f6cac69">00086</a> <span class="keywordtype">void</span> <a class="code" href="class_w_a_k_e___policy.html#110f02ab36e4e4a2fc1ca6250f6cac69">WAKE_Policy&lt;B&gt;::OperateKeystream</a>(<a class="code" href="strciphr_8h.html#b4a226527d2bd01ff19bfa14d0974227">KeystreamOperation</a> operation, byte *output, <span class="keyword">const</span> byte *input, <span class="keywordtype">size_t</span> iterationCount)<a name="l00087"></a>00087 {<a name="l00088"></a>00088 <span class="preprocessor">#define WAKE_OUTPUT(x)\</span><a name="l00089"></a>00089 <span class="preprocessor">        while (iterationCount--)\</span><a name="l00090"></a>00090 <span class="preprocessor">        {\</span><a name="l00091"></a>00091 <span class="preprocessor">                CRYPTOPP_KEYSTREAM_OUTPUT_WORD(x, B::ToEnum(), 0, r6);\</span><a name="l00092"></a>00092 <span class="preprocessor">                r3 = M(r3, r6);\</span><a name="l00093"></a>00093 <span class="preprocessor">                r4 = M(r4, r3);\</span><a name="l00094"></a>00094 <span class="preprocessor">                r5 = M(r5, r4);\</span><a name="l00095"></a>00095 <span class="preprocessor">                r6 = M(r6, r5);\</span><a name="l00096"></a>00096 <span class="preprocessor">                output += 4;\</span><a name="l00097"></a>00097 <span class="preprocessor">                if (x == XOR_KEYSTREAM)\</span><a name="l00098"></a>00098 <span class="preprocessor">                        input += 4;\</span><a name="l00099"></a>00099 <span class="preprocessor">        }</span><a name="l00100"></a>00100 <span class="preprocessor"></span><a name="l00101"></a>00101         <span class="keyword">typedef</span> word32 <a class="code" href="struct_additive_cipher_concrete_policy.html#94149b18cb6bf530f196ba0132ba904f">WordType</a>;<a name="l00102"></a>00102         <a class="code" href="strciphr_8h.html#4f82514b5ab874259ac783ff9b96c4e5">CRYPTOPP_KEYSTREAM_OUTPUT_SWITCH</a>(WAKE_OUTPUT, 0);<a name="l00103"></a>00103 }<a name="l00104"></a>00104 <span class="comment">/*</span><a name="l00105"></a>00105 <span class="comment">template &lt;class B&gt;</span><a name="l00106"></a>00106 <span class="comment">void WAKE_ROFB_Policy&lt;B&gt;::Iterate(KeystreamOperation operation, byte *output, const byte *input, unsigned int iterationCount)</span><a name="l00107"></a>00107 <span class="comment">{</span><a name="l00108"></a>00108 <span class="comment">        KeystreamOutput&lt;B&gt; keystreamOperation(operation, output, input);</span><a name="l00109"></a>00109 <span class="comment"></span><a name="l00110"></a>00110 <span class="comment">        while (iterationCount--)</span><a name="l00111"></a>00111 <span class="comment">        {</span><a name="l00112"></a>00112 <span class="comment">                keystreamOperation(r6);</span><a name="l00113"></a>00113 <span class="comment">                r3 = M(r3, r6);</span><a name="l00114"></a>00114 <span class="comment">                r4 = M(r4, r3);</span><a name="l00115"></a>00115 <span class="comment">                r5 = M(r5, r4);</span><a name="l00116"></a>00116 <span class="comment">                r6 = M(r6, r5);</span><a name="l00117"></a>00117 <span class="comment">        }</span><a name="l00118"></a>00118 <span class="comment">}</span><a name="l00119"></a>00119 <span class="comment">*/</span><a name="l00120"></a>00120 <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="class_w_a_k_e___policy.html">WAKE_Policy&lt;BigEndian&gt;</a>;<a name="l00121"></a>00121 <span class="keyword">template</span> <span class="keyword">class </span><a class="code" href="class_w_a_k_e___policy.html">WAKE_Policy&lt;LittleEndian&gt;</a>;<a name="l00122"></a>00122 <span class="comment">//template class WAKE_ROFB_Policy&lt;BigEndian&gt;;</span><a name="l00123"></a>00123 <span class="comment">//template class WAKE_ROFB_Policy&lt;LittleEndian&gt;;</span><a name="l00124"></a>00124 <a name="l00125"></a>00125 NAMESPACE_END</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 1 11:11:25 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 + -