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

📄 whrlpool_8cpp-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00349"></a>00349     W64LIT(0xc37eda3f3ffc3fe5), W64LIT(0x1caac75555495592), W64LIT(0x1059dba2a2b2a279), W64LIT(0x65c9e9eaea8fea03),<a name="l00350"></a>00350     W64LIT(0xecca6a656589650f), W64LIT(0x686903babad2bab9), W64LIT(0x935e4a2f2fbc2f65), W64LIT(0xe79d8ec0c027c04e),<a name="l00351"></a>00351     W64LIT(0x81a160dede5fdebe), W64LIT(0x6c38fc1c1c701ce0), W64LIT(0x2ee746fdfdd3fdbb), W64LIT(0x649a1f4d4d294d52),<a name="l00352"></a>00352     W64LIT(0xe0397692927292e4), W64LIT(0xbceafa7575c9758f), W64LIT(0x1e0c360606180630), W64LIT(0x9809ae8a8a128a24),<a name="l00353"></a>00353     W64LIT(0x40794bb2b2f2b2f9), W64LIT(0x59d185e6e6bfe663), W64LIT(0x361c7e0e0e380e70), W64LIT(0x633ee71f1f7c1ff8),<a name="l00354"></a>00354     W64LIT(0xf7c4556262956237), W64LIT(0xa3b53ad4d477d4ee), W64LIT(0x324d81a8a89aa829), W64LIT(0xf4315296966296c4),<a name="l00355"></a>00355     W64LIT(0x3aef62f9f9c3f99b), W64LIT(0xf697a3c5c533c566), W64LIT(0xb14a102525942535), W64LIT(0x20b2ab59597959f2),<a name="l00356"></a>00356     W64LIT(0xae15d084842a8454), W64LIT(0xa7e4c57272d572b7), W64LIT(0xdd72ec3939e439d5), W64LIT(0x6198164c4c2d4c5a),<a name="l00357"></a>00357     W64LIT(0x3bbc945e5e655eca), W64LIT(0x85f09f7878fd78e7), W64LIT(0xd870e53838e038dd), W64LIT(0x8605988c8c0a8c14),<a name="l00358"></a>00358     W64LIT(0xb2bf17d1d163d1c6), W64LIT(0x0b57e4a5a5aea541), W64LIT(0x4dd9a1e2e2afe243), W64LIT(0xf8c24e616199612f),<a name="l00359"></a>00359     W64LIT(0x457b42b3b3f6b3f1), W64LIT(0xa542342121842115), W64LIT(0xd625089c9c4a9c94), W64LIT(0x663cee1e1e781ef0),<a name="l00360"></a>00360     W64LIT(0x5286614343114322), W64LIT(0xfc93b1c7c73bc776), W64LIT(0x2be54ffcfcd7fcb3), W64LIT(0x1408240404100420),<a name="l00361"></a>00361     W64LIT(0x08a2e351515951b2), W64LIT(0xc72f2599995e99bc), W64LIT(0xc4da226d6da96d4f), W64LIT(0x391a650d0d340d68),<a name="l00362"></a>00362     W64LIT(0x35e979fafacffa83), W64LIT(0x84a369dfdf5bdfb6), W64LIT(0x9bfca97e7ee57ed7), W64LIT(0xb44819242490243d),<a name="l00363"></a>00363     W64LIT(0xd776fe3b3bec3bc5), W64LIT(0x3d4b9aabab96ab31), W64LIT(0xd181f0cece1fce3e), W64LIT(0x5522991111441188),<a name="l00364"></a>00364     W64LIT(0x8903838f8f068f0c), W64LIT(0x6b9c044e4e254e4a), W64LIT(0x517366b7b7e6b7d1), W64LIT(0x60cbe0ebeb8beb0b),<a name="l00365"></a>00365     W64LIT(0xcc78c13c3cf03cfd), W64LIT(0xbf1ffd81813e817c), W64LIT(0xfe354094946a94d4), W64LIT(0x0cf31cf7f7fbf7eb),<a name="l00366"></a>00366     W64LIT(0x676f18b9b9deb9a1), W64LIT(0x5f268b13134c1398), W64LIT(0x9c58512c2cb02c7d), W64LIT(0xb8bb05d3d36bd3d6),<a name="l00367"></a>00367     W64LIT(0x5cd38ce7e7bbe76b), W64LIT(0xcbdc396e6ea56e57), W64LIT(0xf395aac4c437c46e), W64LIT(0x0f061b03030c0318),<a name="l00368"></a>00368     W64LIT(0x13acdc565645568a), W64LIT(0x49885e44440d441a), W64LIT(0x9efea07f7fe17fdf), W64LIT(0x374f88a9a99ea921),<a name="l00369"></a>00369     W64LIT(0x8254672a2aa82a4d), W64LIT(0x6d6b0abbbbd6bbb1), W64LIT(0xe29f87c1c123c146), W64LIT(0x02a6f153535153a2),<a name="l00370"></a>00370     W64LIT(0x8ba572dcdc57dcae), W64LIT(0x2716530b0b2c0b58), W64LIT(0xd327019d9d4e9d9c), W64LIT(0xc1d82b6c6cad6c47),<a name="l00371"></a>00371     W64LIT(0xf562a43131c43195), W64LIT(0xb9e8f37474cd7487), W64LIT(0x09f115f6f6fff6e3), W64LIT(0x438c4c464605460a),<a name="l00372"></a>00372     W64LIT(0x2645a5acac8aac09), W64LIT(0x970fb589891e893c), W64LIT(0x4428b414145014a0), W64LIT(0x42dfbae1e1a3e15b),<a name="l00373"></a>00373     W64LIT(0x4e2ca616165816b0), W64LIT(0xd274f73a3ae83acd), W64LIT(0xd0d2066969b9696f), W64LIT(0x2d12410909240948),<a name="l00374"></a>00374     W64LIT(0xade0d77070dd70a7), W64LIT(0x54716fb6b6e2b6d9), W64LIT(0xb7bd1ed0d067d0ce), W64LIT(0x7ec7d6eded93ed3b),<a name="l00375"></a>00375     W64LIT(0xdb85e2cccc17cc2e), W64LIT(0x578468424215422a), W64LIT(0xc22d2c98985a98b4), W64LIT(0x0e55eda4a4aaa449),<a name="l00376"></a>00376     W64LIT(0x8850752828a0285d), W64LIT(0x31b8865c5c6d5cda), W64LIT(0x3fed6bf8f8c7f893), W64LIT(0xa411c28686228644),<a name="l00377"></a>00377 <a name="l00378"></a>00378         W64LIT(0x1823c6e887b8014f),<a name="l00379"></a>00379         W64LIT(0x36a6d2f5796f9152),<a name="l00380"></a>00380         W64LIT(0x60bc9b8ea30c7b35),<a name="l00381"></a>00381         W64LIT(0x1de0d7c22e4bfe57),<a name="l00382"></a>00382         W64LIT(0x157737e59ff04ada),<a name="l00383"></a>00383         W64LIT(0x58c9290ab1a06b85),<a name="l00384"></a>00384         W64LIT(0xbd5d10f4cb3e0567),<a name="l00385"></a>00385         W64LIT(0xe427418ba77d95d8),<a name="l00386"></a>00386         W64LIT(0xfbee7c66dd17479e),<a name="l00387"></a>00387         W64LIT(0xca2dbf07ad5a8333)<a name="l00388"></a>00388 };<a name="l00389"></a>00389 <a name="l00390"></a>00390 <span class="comment">// Whirlpool basic transformation. Transforms state based on block.</span><a name="l00391"></a><a class="code" href="class_whirlpool.html#49ecf7d398bb027dd4f2465c05f1b77f">00391</a> <span class="keywordtype">void</span> <a class="code" href="class_whirlpool.html#49ecf7d398bb027dd4f2465c05f1b77f">Whirlpool::Transform</a>(word64 *digest, <span class="keyword">const</span> word64 *block)<a name="l00392"></a>00392 {<a name="l00393"></a>00393 <span class="preprocessor">#if defined(CRYPTOPP_X86_ASM_AVAILABLE)</span><a name="l00394"></a>00394 <span class="preprocessor"></span>        <span class="keywordflow">if</span> (HasMMX())<a name="l00395"></a>00395         {<a name="l00396"></a>00396                 <span class="comment">// MMX version has the same structure as C version below</span><a name="l00397"></a>00397 <span class="preprocessor">#ifdef __GNUC__</span><a name="l00398"></a>00398 <span class="preprocessor"></span>        __asm__ __volatile__<a name="l00399"></a>00399         (<a name="l00400"></a>00400                 <span class="stringliteral">".intel_syntax noprefix;"</span><a name="l00401"></a>00401                 AS_PUSH(                bx)<a name="l00402"></a>00402                 AS2(    mov             WORD_REG(bx), WORD_REG(ax))<a name="l00403"></a>00403 #<span class="keywordflow">else</span><a name="l00404"></a>00404         #<span class="keywordflow">if</span> _MSC_VER &lt; 1300<a name="l00405"></a>00405                 AS_PUSH(                bx)<a name="l00406"></a>00406         #endif<a name="l00407"></a>00407                 AS2(    lea             WORD_REG(bx), [Whirlpool_C])<a name="l00408"></a>00408                 AS2(    mov             WORD_REG(cx), digest)<a name="l00409"></a>00409                 AS2(    mov             WORD_REG(dx), block)<a name="l00410"></a>00410 #endif<a name="l00411"></a>00411                 AS2(    mov             WORD_REG(ax), WORD_REG(sp))<a name="l00412"></a>00412                 AS2(    and             WORD_REG(sp), -16)<a name="l00413"></a>00413                 AS2(    sub             WORD_REG(sp), 16*8)<a name="l00414"></a>00414                 AS_PUSH(                ax)<a name="l00415"></a>00415                 AS2(    xor             esi, esi)<a name="l00416"></a>00416                 ASL(0)<a name="l00417"></a>00417                 AS2(    movq    mm0, [WORD_REG(cx)+8*WORD_REG(si)])<a name="l00418"></a>00418                 AS2(    movq    [WORD_REG(sp)+WORD_SZ+8*WORD_REG(si)], mm0)             <span class="comment">// k</span><a name="l00419"></a>00419                 AS2(    pxor    mm0, [WORD_REG(dx)+8*WORD_REG(si)])<a name="l00420"></a>00420                 AS2(    movq    [WORD_REG(sp)+WORD_SZ+64+8*WORD_REG(si)], mm0)  <span class="comment">// s</span><a name="l00421"></a>00421                 AS2(    movq    [WORD_REG(cx)+8*WORD_REG(si)], mm0)<a name="l00422"></a>00422                 AS1(    inc             WORD_REG(si))<a name="l00423"></a>00423                 AS2(    cmp             WORD_REG(si), 8)<a name="l00424"></a>00424                 ASJ(    jne,    0, b)<a name="l00425"></a>00425 <a name="l00426"></a>00426                 AS2(    xor             esi, esi)<a name="l00427"></a>00427                 ASL(1)<a name="l00428"></a>00428 <a name="l00429"></a>00429 #define KSL0(a, b)      AS2(movq        mm##a, b)<a name="l00430"></a>00430 #define KSL1(a, b)      AS2(pxor        mm##a, b)<a name="l00431"></a>00431 <a name="l00432"></a>00432 #define KSL(op, i, a, b, c, d)  \<a name="l00433"></a>00433         AS2(mov         eax, [WORD_REG(sp)+WORD_SZ+8*i])\<a name="l00434"></a>00434         AS2(movzx       edi, al)\<a name="l00435"></a>00435         KSL##op(a, [WORD_REG(bx)+3*2048+8*WORD_REG(di)])\<a name="l00436"></a>00436         AS2(movzx       edi, ah)\<a name="l00437"></a>00437         KSL##op(b, [WORD_REG(bx)+2*2048+8*WORD_REG(di)])\<a name="l00438"></a>00438         AS2(shr         eax, 16)\<a name="l00439"></a>00439         AS2(movzx       edi, al)\<a name="l00440"></a>00440         AS2(shr         eax, 8)\<a name="l00441"></a>00441         KSL##op(c, [WORD_REG(bx)+1*2048+8*WORD_REG(di)])\<a name="l00442"></a>00442         KSL##op(d, [WORD_REG(bx)+0*2048+8*WORD_REG(ax)])<a name="l00443"></a>00443 <a name="l00444"></a>00444 #define KSH0(a, b)      \<a name="l00445"></a>00445         ASS(pshufw      mm##a, mm##a, 1, 0, 3, 2)\<a name="l00446"></a>00446         AS2(pxor        mm##a, b)<a name="l00447"></a>00447 #define KSH1(a, b)      \<a name="l00448"></a>00448         AS2(pxor        mm##a, b)<a name="l00449"></a>00449 #define KSH2(a, b)      \<a name="l00450"></a>00450         AS2(pxor        mm##a, b)\<a name="l00451"></a>00451         AS2(movq        [WORD_REG(sp)+WORD_SZ+8*a], mm##a)<a name="l00452"></a>00452 <a name="l00453"></a>00453 #define KSH(op, i, a, b, c, d)  \<a name="l00454"></a>00454         AS2(mov         eax, [WORD_REG(sp)+WORD_SZ+8*((i+4)-8*((i+4)/8))+4])\<a name="l00455"></a>00455         AS2(movzx       edi, al)\<a name="l00456"></a>00456         KSH##op(a, [WORD_REG(bx)+3*2048+8*WORD_REG(di)])\<a name="l00457"></a>00457         AS2(movzx       edi, ah)\<a name="l00458"></a>00458         KSH##op(b, [WORD_REG(bx)+2*2048+8*WORD_REG(di)])\<a name="l00459"></a>00459         AS2(shr         eax, 16)\<a name="l00460"></a>00460         AS2(movzx       edi, al)\<a name="l00461"></a>00461         AS2(shr         eax, 8)\<a name="l00462"></a>00462         KSH##op(c, [WORD_REG(bx)+1*2048+8*WORD_REG(di)])\<a name="l00463"></a>00463         KSH##op(d, [WORD_REG(bx)+0*2048+8*WORD_REG(ax)])<a name="l00464"></a>00464 <a name="l00465"></a>00465 #define TSL(op, i, a, b, c, d)  \<a name="l00466"></a>00466         AS2(mov         eax, [WORD_REG(sp)+WORD_SZ+64+8*i])\<a name="l00467"></a>00467         AS2(movzx       edi, al)\<a name="l00468"></a>00468         KSL##op(a, [WORD_REG(bx)+3*2048+8*WORD_REG(di)])\<a name="l00469"></a>00469         AS2(movzx       edi, ah)\<a name="l00470"></a>00470         KSL##op(b, [WORD_REG(bx)+2*2048+8*WORD_REG(di)])\<a name="l00471"></a>00471         AS2(shr         eax, 16)\

⌨️ 快捷键说明

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