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

📄 rijndael_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00191             Te0[GETBYTE(s1, 3)] ^00192             Te1[GETBYTE(s2, 2)] ^00193             Te2[GETBYTE(s3, 1)] ^00194             Te3[GETBYTE(s0, 0)] ^00195             rk[5];00196         t2 =00197             Te0[GETBYTE(s2, 3)] ^00198             Te1[GETBYTE(s3, 2)] ^00199             Te2[GETBYTE(s0, 1)] ^00200             Te3[GETBYTE(s1, 0)] ^00201             rk[6];00202         t3 =00203             Te0[GETBYTE(s3, 3)] ^00204             Te1[GETBYTE(s0, 2)] ^00205             Te2[GETBYTE(s1, 1)] ^00206             Te3[GETBYTE(s2, 0)] ^00207             rk[7];00208 00209         rk += 8;00210         <span class="keywordflow">if</span> (--r == 0) {00211             <span class="keywordflow">break</span>;00212         }00213 00214         s0 =00215             Te0[GETBYTE(t0, 3)] ^00216             Te1[GETBYTE(t1, 2)] ^00217             Te2[GETBYTE(t2, 1)] ^00218             Te3[GETBYTE(t3, 0)] ^00219             rk[0];00220         s1 =00221             Te0[GETBYTE(t1, 3)] ^00222             Te1[GETBYTE(t2, 2)] ^00223             Te2[GETBYTE(t3, 1)] ^00224             Te3[GETBYTE(t0, 0)] ^00225             rk[1];00226         s2 =00227             Te0[GETBYTE(t2, 3)] ^00228             Te1[GETBYTE(t3, 2)] ^00229             Te2[GETBYTE(t0, 1)] ^00230             Te3[GETBYTE(t1, 0)] ^00231             rk[2];00232         s3 =00233             Te0[GETBYTE(t3, 3)] ^00234             Te1[GETBYTE(t0, 2)] ^00235             Te2[GETBYTE(t1, 1)] ^00236             Te3[GETBYTE(t2, 0)] ^00237             rk[3];00238     }00239     <span class="comment">/*</span>00240 <span class="comment">         * apply last round and</span>00241 <span class="comment">         * map cipher state to byte array block:</span>00242 <span class="comment">         */</span>00243 00244         s0 =00245                 (Te4[GETBYTE(t0, 3)] &amp; 0xff000000) ^00246                 (Te4[GETBYTE(t1, 2)] &amp; 0x00ff0000) ^00247                 (Te4[GETBYTE(t2, 1)] &amp; 0x0000ff00) ^00248                 (Te4[GETBYTE(t3, 0)] &amp; 0x000000ff) ^00249                 rk[0];00250         s1 =00251                 (Te4[GETBYTE(t1, 3)] &amp; 0xff000000) ^00252                 (Te4[GETBYTE(t2, 2)] &amp; 0x00ff0000) ^00253                 (Te4[GETBYTE(t3, 1)] &amp; 0x0000ff00) ^00254                 (Te4[GETBYTE(t0, 0)] &amp; 0x000000ff) ^00255                 rk[1];00256         s2 =00257                 (Te4[GETBYTE(t2, 3)] &amp; 0xff000000) ^00258                 (Te4[GETBYTE(t3, 2)] &amp; 0x00ff0000) ^00259                 (Te4[GETBYTE(t0, 1)] &amp; 0x0000ff00) ^00260                 (Te4[GETBYTE(t1, 0)] &amp; 0x000000ff) ^00261                 rk[2];00262         s3 =00263                 (Te4[GETBYTE(t3, 3)] &amp; 0xff000000) ^00264                 (Te4[GETBYTE(t0, 2)] &amp; 0x00ff0000) ^00265                 (Te4[GETBYTE(t1, 1)] &amp; 0x0000ff00) ^00266                 (Te4[GETBYTE(t2, 0)] &amp; 0x000000ff) ^00267                 rk[3];00268 00269         Block::Put(xorBlock, outBlock)(s0)(s1)(s2)(s3);00270 }00271 00272 <span class="keywordtype">void</span> Rijndael::Dec::ProcessAndXorBlock(<span class="keyword">const</span> byte *inBlock, <span class="keyword">const</span> byte *xorBlock, byte *outBlock)<span class="keyword"> const</span>00273 <span class="keyword"></span>{00274         word32 s0, s1, s2, s3, t0, t1, t2, t3;00275     <span class="keyword">const</span> word32 *rk = m_key;00276 00277     <span class="comment">/*</span>00278 <span class="comment">         * map byte array block to cipher state</span>00279 <span class="comment">         * and add initial round key:</span>00280 <span class="comment">         */</span>00281         Block::Get(inBlock)(s0)(s1)(s2)(s3);00282         s0 ^= rk[0];00283         s1 ^= rk[1];00284         s2 ^= rk[2];00285         s3 ^= rk[3];00286     <span class="comment">/*</span>00287 <span class="comment">     * Nr - 1 full rounds:</span>00288 <span class="comment">     */</span>00289     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> r = m_rounds &gt;&gt; 1;00290     <span class="keywordflow">for</span> (;;) {00291         t0 =00292             Td0[GETBYTE(s0, 3)] ^00293             Td1[GETBYTE(s3, 2)] ^00294             Td2[GETBYTE(s2, 1)] ^00295             Td3[GETBYTE(s1, 0)] ^00296             rk[4];00297         t1 =00298             Td0[GETBYTE(s1, 3)] ^00299             Td1[GETBYTE(s0, 2)] ^00300             Td2[GETBYTE(s3, 1)] ^00301             Td3[GETBYTE(s2, 0)] ^00302             rk[5];00303         t2 =00304             Td0[GETBYTE(s2, 3)] ^00305             Td1[GETBYTE(s1, 2)] ^00306             Td2[GETBYTE(s0, 1)] ^00307             Td3[GETBYTE(s3, 0)] ^00308             rk[6];00309         t3 =00310             Td0[GETBYTE(s3, 3)] ^00311             Td1[GETBYTE(s2, 2)] ^00312             Td2[GETBYTE(s1, 1)] ^00313             Td3[GETBYTE(s0, 0)] ^00314             rk[7];00315 00316         rk += 8;00317         <span class="keywordflow">if</span> (--r == 0) {00318             <span class="keywordflow">break</span>;00319         }00320 00321         s0 =00322             Td0[GETBYTE(t0, 3)] ^00323             Td1[GETBYTE(t3, 2)] ^00324             Td2[GETBYTE(t2, 1)] ^00325             Td3[GETBYTE(t1, 0)] ^00326             rk[0];00327         s1 =00328             Td0[GETBYTE(t1, 3)] ^00329             Td1[GETBYTE(t0, 2)] ^00330             Td2[GETBYTE(t3, 1)] ^00331             Td3[GETBYTE(t2, 0)] ^00332             rk[1];00333         s2 =00334             Td0[GETBYTE(t2, 3)] ^00335             Td1[GETBYTE(t1, 2)] ^00336             Td2[GETBYTE(t0, 1)] ^00337             Td3[GETBYTE(t3, 0)] ^00338             rk[2];00339         s3 =00340             Td0[GETBYTE(t3, 3)] ^00341             Td1[GETBYTE(t2, 2)] ^00342             Td2[GETBYTE(t1, 1)] ^00343             Td3[GETBYTE(t0, 0)] ^00344             rk[3];00345     }00346     <span class="comment">/*</span>00347 <span class="comment">         * apply last round and</span>00348 <span class="comment">         * map cipher state to byte array block:</span>00349 <span class="comment">         */</span>00350         s0 =00351                 (Td4[GETBYTE(t0, 3)] &amp; 0xff000000) ^00352                 (Td4[GETBYTE(t3, 2)] &amp; 0x00ff0000) ^00353                 (Td4[GETBYTE(t2, 1)] &amp; 0x0000ff00) ^00354                 (Td4[GETBYTE(t1, 0)] &amp; 0x000000ff) ^00355                 rk[0];00356         s1 =00357                 (Td4[GETBYTE(t1, 3)] &amp; 0xff000000) ^00358                 (Td4[GETBYTE(t0, 2)] &amp; 0x00ff0000) ^00359                 (Td4[GETBYTE(t3, 1)] &amp; 0x0000ff00) ^00360                 (Td4[GETBYTE(t2, 0)] &amp; 0x000000ff) ^00361                 rk[1];00362         s2 =00363                 (Td4[GETBYTE(t2, 3)] &amp; 0xff000000) ^00364                 (Td4[GETBYTE(t1, 2)] &amp; 0x00ff0000) ^00365                 (Td4[GETBYTE(t0, 1)] &amp; 0x0000ff00) ^00366                 (Td4[GETBYTE(t3, 0)] &amp; 0x000000ff) ^00367                 rk[2];00368         s3 =00369                 (Td4[GETBYTE(t3, 3)] &amp; 0xff000000) ^00370                 (Td4[GETBYTE(t2, 2)] &amp; 0x00ff0000) ^00371                 (Td4[GETBYTE(t1, 1)] &amp; 0x0000ff00) ^00372                 (Td4[GETBYTE(t0, 0)] &amp; 0x000000ff) ^00373                 rk[3];00374 00375         Block::Put(xorBlock, outBlock)(s0)(s1)(s2)(s3);00376 }00377 00378 NAMESPACE_END00379 00380 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:23 2003 for Crypto++ by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.2 </small></address></body></html>

⌨️ 快捷键说明

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