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

📄 whrlpool_8cpp-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00472"></a>00472         AS2(movzx       edi, al)\<a name="l00473"></a>00473         AS2(shr         eax, 8)\<a name="l00474"></a>00474         KSL##op(c, [WORD_REG(bx)+1*2048+8*WORD_REG(di)])\<a name="l00475"></a>00475         KSL##op(d, [WORD_REG(bx)+0*2048+8*WORD_REG(ax)])<a name="l00476"></a>00476 <a name="l00477"></a>00477 #define TSH0(a, b)      \<a name="l00478"></a>00478         ASS(pshufw      mm##a, mm##a, 1, 0, 3, 2)\<a name="l00479"></a>00479         AS2(pxor        mm##a, [WORD_REG(sp)+WORD_SZ+8*a])\<a name="l00480"></a>00480         AS2(pxor        mm##a, b)<a name="l00481"></a>00481 #define TSH1(a, b)      \<a name="l00482"></a>00482         AS2(pxor        mm##a, b)<a name="l00483"></a>00483 #define TSH2(a, b)      \<a name="l00484"></a>00484         AS2(pxor        mm##a, b)\<a name="l00485"></a>00485         AS2(movq        [WORD_REG(sp)+WORD_SZ+64+8*a], mm##a)<a name="l00486"></a>00486 #define TSH3(a, b)      \<a name="l00487"></a>00487         AS2(pxor        mm##a, b)\<a name="l00488"></a>00488         AS2(pxor        mm##a, [WORD_REG(cx)+8*a])\<a name="l00489"></a>00489         AS2(movq        [WORD_REG(cx)+8*a], mm##a)<a name="l00490"></a>00490 <a name="l00491"></a>00491 #define TSH(op, i, a, b, c, d)  \<a name="l00492"></a>00492         AS2(mov         eax, [WORD_REG(sp)+WORD_SZ+64+8*((i+4)-8*((i+4)/8))+4])\<a name="l00493"></a>00493         AS2(movzx       edi, al)\<a name="l00494"></a>00494         TSH##op(a, [WORD_REG(bx)+3*2048+8*WORD_REG(di)])\<a name="l00495"></a>00495         AS2(movzx       edi, ah)\<a name="l00496"></a>00496         TSH##op(b, [WORD_REG(bx)+2*2048+8*WORD_REG(di)])\<a name="l00497"></a>00497         AS2(shr         eax, 16)\<a name="l00498"></a>00498         AS2(movzx       edi, al)\<a name="l00499"></a>00499         AS2(shr         eax, 8)\<a name="l00500"></a>00500         TSH##op(c, [WORD_REG(bx)+1*2048+8*WORD_REG(di)])\<a name="l00501"></a>00501         TSH##op(d, [WORD_REG(bx)+0*2048+8*WORD_REG(ax)])<a name="l00502"></a>00502 <a name="l00503"></a>00503                 KSL(0, 4, 3, 2, 1, 0)<a name="l00504"></a>00504                 KSL(0, 0, 7, 6, 5, 4)<a name="l00505"></a>00505                 KSL(1, 1, 0, 7, 6, 5)<a name="l00506"></a>00506                 KSL(1, 2, 1, 0, 7, 6)<a name="l00507"></a>00507                 KSL(1, 3, 2, 1, 0, 7)<a name="l00508"></a>00508                 KSL(1, 5, 4, 3, 2, 1)<a name="l00509"></a>00509                 KSL(1, 6, 5, 4, 3, 2)<a name="l00510"></a>00510                 KSL(1, 7, 6, 5, 4, 3)<a name="l00511"></a>00511                 KSH(0, 0, 7, 6, 5, 4)<a name="l00512"></a>00512                 KSH(0, 4, 3, 2, 1, 0)<a name="l00513"></a>00513                 KSH(1, 1, 0, 7, 6, 5)<a name="l00514"></a>00514                 KSH(1, 2, 1, 0, 7, 6)<a name="l00515"></a>00515                 KSH(1, 5, 4, 3, 2, 1)<a name="l00516"></a>00516                 KSH(1, 6, 5, 4, 3, 2)<a name="l00517"></a>00517                 KSH(2, 3, 2, 1, 0, 7)<a name="l00518"></a>00518                 KSH(2, 7, 6, 5, 4, 3)<a name="l00519"></a>00519 <a name="l00520"></a>00520                 AS2(    pxor    mm0, [WORD_REG(bx) + 8*1024 + WORD_REG(si)*8])<a name="l00521"></a>00521                 AS2(    movq    [WORD_REG(sp)+WORD_SZ], mm0)<a name="l00522"></a>00522 <a name="l00523"></a>00523                 TSL(0, 4, 3, 2, 1, 0)<a name="l00524"></a>00524                 TSL(0, 0, 7, 6, 5, 4)<a name="l00525"></a>00525                 TSL(1, 1, 0, 7, 6, 5)<a name="l00526"></a>00526                 TSL(1, 2, 1, 0, 7, 6)<a name="l00527"></a>00527                 TSL(1, 3, 2, 1, 0, 7)<a name="l00528"></a>00528                 TSL(1, 5, 4, 3, 2, 1)<a name="l00529"></a>00529                 TSL(1, 6, 5, 4, 3, 2)<a name="l00530"></a>00530                 TSL(1, 7, 6, 5, 4, 3)<a name="l00531"></a>00531                 TSH(0, 0, 7, 6, 5, 4)<a name="l00532"></a>00532                 TSH(0, 4, 3, 2, 1, 0)<a name="l00533"></a>00533                 TSH(1, 1, 0, 7, 6, 5)<a name="l00534"></a>00534                 TSH(1, 2, 1, 0, 7, 6)<a name="l00535"></a>00535                 TSH(1, 5, 4, 3, 2, 1)<a name="l00536"></a>00536                 TSH(1, 6, 5, 4, 3, 2)<a name="l00537"></a>00537 <a name="l00538"></a>00538                 AS1(    inc             WORD_REG(si))<a name="l00539"></a>00539                 AS2(    cmp             WORD_REG(si), 10)<a name="l00540"></a>00540                 ASJ(    je,             2, f)<a name="l00541"></a>00541 <a name="l00542"></a>00542                 TSH(2, 3, 2, 1, 0, 7)<a name="l00543"></a>00543                 TSH(2, 7, 6, 5, 4, 3)<a name="l00544"></a>00544 <a name="l00545"></a>00545                 ASJ(    jmp,    1, b)<a name="l00546"></a>00546                 ASL(2)<a name="l00547"></a>00547 <a name="l00548"></a>00548                 TSH(3, 3, 2, 1, 0, 7)<a name="l00549"></a>00549                 TSH(3, 7, 6, 5, 4, 3)<a name="l00550"></a>00550 <a name="l00551"></a>00551 #undef KSL<a name="l00552"></a>00552 #undef KSH<a name="l00553"></a>00553 #undef TSL<a name="l00554"></a>00554 #undef TSH<a name="l00555"></a>00555 <a name="l00556"></a>00556                 AS_POP(                 sp)<a name="l00557"></a>00557                 AS1(    emms)<a name="l00558"></a>00558 <a name="l00559"></a>00559 #<span class="keywordflow">if</span> defined(__GNUC__) || (defined(_MSC_VER) &amp;&amp; _MSC_VER &lt; 1300)<a name="l00560"></a>00560                 AS_POP(                 bx)<a name="l00561"></a>00561 #endif<a name="l00562"></a>00562 #ifdef __GNUC__<a name="l00563"></a>00563                 <span class="stringliteral">".att_syntax prefix;"</span><a name="l00564"></a>00564                         :<a name="l00565"></a>00565                         : <span class="stringliteral">"a"</span> (Whirlpool_C), <span class="stringliteral">"c"</span> (digest), <span class="stringliteral">"d"</span> (block)<a name="l00566"></a>00566                         : <span class="stringliteral">"%esi"</span>, <span class="stringliteral">"%edi"</span>, <span class="stringliteral">"memory"</span>, <span class="stringliteral">"cc"</span><a name="l00567"></a>00567                 );<a name="l00568"></a>00568 <span class="preprocessor">#endif</span><a name="l00569"></a>00569 <span class="preprocessor"></span>        }<a name="l00570"></a>00570         <span class="keywordflow">else</span><a name="l00571"></a>00571 <span class="preprocessor">#endif          // #ifdef CRYPTOPP_X86_ASM_AVAILABLE</span><a name="l00572"></a>00572 <span class="preprocessor"></span>        {<a name="l00573"></a>00573         word64 s[8];    <span class="comment">// the cipher state</span><a name="l00574"></a>00574         word64 k[8];    <span class="comment">// the round key</span><a name="l00575"></a>00575 <a name="l00576"></a>00576         <span class="comment">// Compute and apply K^0 to the cipher state</span><a name="l00577"></a>00577         <span class="comment">// Also apply part of the Miyaguchi-Preneel compression function</span><a name="l00578"></a>00578         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;8; i++)<a name="l00579"></a>00579                 digest[i] = s[i] = block[i] ^ (k[i] = digest[i]);<a name="l00580"></a>00580 <a name="l00581"></a>00581 <span class="preprocessor">#define KSL(op, i, a, b, c, d)  \</span><a name="l00582"></a>00582 <span class="preprocessor">        t = (word32)k[i];\</span><a name="l00583"></a>00583 <span class="preprocessor">        w##a = Whirlpool_C[3*256 + (byte)t] ^ (op ? w##a : 0);\</span><a name="l00584"></a>00584 <span class="preprocessor">        t &gt;&gt;= 8;\</span><a name="l00585"></a>00585 <span class="preprocessor">        w##b = Whirlpool_C[2*256 + (byte)t] ^ (op ? w##b : 0);\</span><a name="l00586"></a>00586 <span class="preprocessor">        t &gt;&gt;= 8;\</span><a name="l00587"></a>00587 <span class="preprocessor">        w##c = Whirlpool_C[1*256 + (byte)t] ^ (op ? w##c : 0);\</span><a name="l00588"></a>00588 <span class="preprocessor">        t &gt;&gt;= 8;\</span><a name="l00589"></a>00589 <span class="preprocessor">        w##d = Whirlpool_C[0*256 + t]       ^ (op ? w##d : 0);</span><a name="l00590"></a>00590 <span class="preprocessor"></span><a name="l00591"></a>00591 <span class="preprocessor">#define KSH(op, i, a, b, c, d)  \</s

⌨️ 快捷键说明

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