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

📄 misc_8h-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00409"></a>00409                 carry = ((output[i] = input[i]+1) == 0);<a name="l00410"></a>00410         memcpy_s(output, s, input, i+1);<a name="l00411"></a>00411 }<a name="l00412"></a>00412 <a name="l00413"></a>00413 <span class="comment">// ************** rotate functions ***************</span><a name="l00414"></a>00414 <a name="l00415"></a>00415 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt; <span class="keyword">inline</span> T rotlFixed(T x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00416"></a>00416 {<a name="l00417"></a>00417         assert(y &lt; <span class="keyword">sizeof</span>(T)*8);<a name="l00418"></a>00418         <span class="keywordflow">return</span> T((x&lt;&lt;y) | (x&gt;&gt;(<span class="keyword">sizeof</span>(T)*8-y)));<a name="l00419"></a>00419 }<a name="l00420"></a>00420 <a name="l00421"></a>00421 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt; <span class="keyword">inline</span> T rotrFixed(T x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00422"></a>00422 {<a name="l00423"></a>00423         assert(y &lt; <span class="keyword">sizeof</span>(T)*8);<a name="l00424"></a>00424         <span class="keywordflow">return</span> T((x&gt;&gt;y) | (x&lt;&lt;(<span class="keyword">sizeof</span>(T)*8-y)));<a name="l00425"></a>00425 }<a name="l00426"></a>00426 <a name="l00427"></a>00427 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt; <span class="keyword">inline</span> T rotlVariable(T x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00428"></a>00428 {<a name="l00429"></a>00429         assert(y &lt; <span class="keyword">sizeof</span>(T)*8);<a name="l00430"></a>00430         <span class="keywordflow">return</span> T((x&lt;&lt;y) | (x&gt;&gt;(<span class="keyword">sizeof</span>(T)*8-y)));<a name="l00431"></a>00431 }<a name="l00432"></a>00432 <a name="l00433"></a>00433 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt; <span class="keyword">inline</span> T rotrVariable(T x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00434"></a>00434 {<a name="l00435"></a>00435         assert(y &lt; <span class="keyword">sizeof</span>(T)*8);<a name="l00436"></a>00436         <span class="keywordflow">return</span> T((x&gt;&gt;y) | (x&lt;&lt;(<span class="keyword">sizeof</span>(T)*8-y)));<a name="l00437"></a>00437 }<a name="l00438"></a>00438 <a name="l00439"></a>00439 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt; <span class="keyword">inline</span> T rotlMod(T x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00440"></a>00440 {<a name="l00441"></a>00441         y %= <span class="keyword">sizeof</span>(T)*8;<a name="l00442"></a>00442         <span class="keywordflow">return</span> T((x&lt;&lt;y) | (x&gt;&gt;(<span class="keyword">sizeof</span>(T)*8-y)));<a name="l00443"></a>00443 }<a name="l00444"></a>00444 <a name="l00445"></a>00445 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt; <span class="keyword">inline</span> T rotrMod(T x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00446"></a>00446 {<a name="l00447"></a>00447         y %= <span class="keyword">sizeof</span>(T)*8;<a name="l00448"></a>00448         <span class="keywordflow">return</span> T((x&gt;&gt;y) | (x&lt;&lt;(<span class="keyword">sizeof</span>(T)*8-y)));<a name="l00449"></a>00449 }<a name="l00450"></a>00450 <a name="l00451"></a>00451 <span class="preprocessor">#ifdef _MSC_VER</span><a name="l00452"></a>00452 <span class="preprocessor"></span><a name="l00453"></a>00453 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word32 rotlFixed&lt;word32&gt;(word32 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00454"></a>00454 {<a name="l00455"></a>00455         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00456"></a>00456         <span class="keywordflow">return</span> y ? _lrotl(x, y) : x;<a name="l00457"></a>00457 }<a name="l00458"></a>00458 <a name="l00459"></a>00459 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word32 rotrFixed&lt;word32&gt;(word32 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00460"></a>00460 {<a name="l00461"></a>00461         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00462"></a>00462         <span class="keywordflow">return</span> y ? _lrotr(x, y) : x;<a name="l00463"></a>00463 }<a name="l00464"></a>00464 <a name="l00465"></a>00465 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word32 rotlVariable&lt;word32&gt;(word32 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00466"></a>00466 {<a name="l00467"></a>00467         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00468"></a>00468         <span class="keywordflow">return</span> _lrotl(x, y);<a name="l00469"></a>00469 }<a name="l00470"></a>00470 <a name="l00471"></a>00471 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word32 rotrVariable&lt;word32&gt;(word32 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00472"></a>00472 {<a name="l00473"></a>00473         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00474"></a>00474         <span class="keywordflow">return</span> _lrotr(x, y);<a name="l00475"></a>00475 }<a name="l00476"></a>00476 <a name="l00477"></a>00477 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word32 rotlMod&lt;word32&gt;(word32 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00478"></a>00478 {<a name="l00479"></a>00479         <span class="keywordflow">return</span> _lrotl(x, y);<a name="l00480"></a>00480 }<a name="l00481"></a>00481 <a name="l00482"></a>00482 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word32 rotrMod&lt;word32&gt;(word32 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00483"></a>00483 {<a name="l00484"></a>00484         <span class="keywordflow">return</span> _lrotr(x, y);<a name="l00485"></a>00485 }<a name="l00486"></a>00486 <a name="l00487"></a>00487 <span class="preprocessor">#if _MSC_VER &gt;= 1300</span><a name="l00488"></a>00488 <span class="preprocessor"></span><a name="l00489"></a>00489 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word64 rotlFixed&lt;word64&gt;(word64 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00490"></a>00490 {<a name="l00491"></a>00491         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00492"></a>00492         <span class="keywordflow">return</span> y ? _rotl64(x, y) : x;<a name="l00493"></a>00493 }<a name="l00494"></a>00494 <a name="l00495"></a>00495 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word64 rotrFixed&lt;word64&gt;(word64 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00496"></a>00496 {<a name="l00497"></a>00497         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00498"></a>00498         <span class="keywordflow">return</span> y ? _rotr64(x, y) : x;<a name="l00499"></a>00499 }<a name="l00500"></a>00500 <a name="l00501"></a>00501 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word64 rotlVariable&lt;word64&gt;(word64 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00502"></a>00502 {<a name="l00503"></a>00503         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00504"></a>00504         <span class="keywordflow">return</span> _rotl64(x, y);<a name="l00505"></a>00505 }<a name="l00506"></a>00506 <a name="l00507"></a>00507 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word64 rotrVariable&lt;word64&gt;(word64 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00508"></a>00508 {<a name="l00509"></a>00509         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00510"></a>00510         <span class="keywordflow">return</span> _rotr64(x, y);<a name="l00511"></a>00511 }<a name="l00512"></a>00512 <a name="l00513"></a>00513 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word64 rotlMod&lt;word64&gt;(word64 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00514"></a>00514 {<a name="l00515"></a>00515         <span class="keywordflow">return</span> _rotl64(x, y);<a name="l00516"></a>00516 }<a name="l00517"></a>00517 <a name="l00518"></a>00518 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word64 rotrMod&lt;word64&gt;(word64 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00519"></a>00519 {<a name="l00520"></a>00520         <span class="keywordflow">return</span> _rotr64(x, y);<a name="l00521"></a>00521 }<a name="l00522"></a>00522 <a name="l00523"></a>00523 <span class="preprocessor">#endif // #if _MSC_VER &gt;= 1310</span><a name="l00524"></a>00524 <span class="preprocessor"></span><a name="l00525"></a>00525 <span class="preprocessor">#if _MSC_VER &gt;= 1400 &amp;&amp; (!defined(__INTEL_COMPILER) || __INTEL_COMPILER &gt;= 1000)</span><a name="l00526"></a>00526 <span class="preprocessor"></span><a name="l00527"></a>00527 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word16 rotlFixed&lt;word16&gt;(word16 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00528"></a>00528 {<a name="l00529"></a>00529         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00530"></a>00530         <span class="keywordflow">return</span> y ? _rotl16(x, y) : x;<a name="l00531"></a>00531 }<a name="l00532"></a>00532 <a name="l00533"></a>00533 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word16 rotrFixed&lt;word16&gt;(word16 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00534"></a>00534 {<a name="l00535"></a>00535         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00536"></a>00536         <span class="keywordflow">return</span> y ? _rotr16(x, y) : x;<a name="l00537"></a>00537 }<a name="l00538"></a>00538 <a name="l00539"></a>00539 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word16 rotlVariable&lt;word16&gt;(word16 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00540"></a>00540 {<a name="l00541"></a>00541         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00542"></a>00542         <span class="keywordflow">return</span> _rotl16(x, y);<a name="l00543"></a>00543 }<a name="l00544"></a>00544 <a name="l00545"></a>00545 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word16 rotrVariable&lt;word16&gt;(word16 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)<a name="l00546"></a>00546 {<a name="l00547"></a>00547         assert(y &lt; 8*<span class="keyword">sizeof</span>(x));<a name="l00548"></a>00548         <span class="keywordflow">return</span> _rotr16(x, y);<a name="l00549"></a>00549 }<a name="l00550"></a>00550 <a name="l00551"></a>00551 <span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> word16 rotlMod&lt;word16&gt;(word16 x, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y)

⌨️ 快捷键说明

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