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

📄 sha_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00142     state[5] += f(0);00143     state[6] += g(0);00144     state[7] += h(0);00145     <span class="comment">/* Wipe variables */</span>00146         memset(W, 0, <span class="keyword">sizeof</span>(W));00147         memset(T, 0, <span class="keyword">sizeof</span>(T));00148 }00149 00150 <span class="keyword">const</span> word32 SHA256::K[64] = {00151         0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,00152         0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,00153         0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,00154         0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,00155         0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,00156         0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,00157         0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,00158         0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,00159         0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,00160         0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,00161         0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,00162         0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,00163         0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,00164         0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,00165         0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,00166         0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f200167 };00168 00169 <span class="preprocessor">#undef S0</span>00170 <span class="preprocessor"></span><span class="preprocessor">#undef S1</span>00171 <span class="preprocessor"></span><span class="preprocessor">#undef s0</span>00172 <span class="preprocessor"></span><span class="preprocessor">#undef s1</span>00173 <span class="preprocessor"></span>00174 <span class="comment">// *************************************************************</span>00175 00176 <span class="preprocessor">#ifdef WORD64_AVAILABLE</span>00177 <span class="preprocessor"></span>00178 <span class="keywordtype">void</span> SHA512::Init()00179 {00180         m_digest[0] = W64LIT(0x6a09e667f3bcc908);00181         m_digest[1] = W64LIT(0xbb67ae8584caa73b);00182         m_digest[2] = W64LIT(0x3c6ef372fe94f82b);00183         m_digest[3] = W64LIT(0xa54ff53a5f1d36f1);00184         m_digest[4] = W64LIT(0x510e527fade682d1);00185         m_digest[5] = W64LIT(0x9b05688c2b3e6c1f);00186         m_digest[6] = W64LIT(0x1f83d9abfb41bd6b);00187         m_digest[7] = W64LIT(0x5be0cd19137e2179);00188 }00189 00190 <span class="comment">// for SHA512</span>00191 <span class="preprocessor">#define S0(x) (rotrFixed(x,28)^rotrFixed(x,34)^rotrFixed(x,39))</span>00192 <span class="preprocessor"></span><span class="preprocessor">#define S1(x) (rotrFixed(x,14)^rotrFixed(x,18)^rotrFixed(x,41))</span>00193 <span class="preprocessor"></span><span class="preprocessor">#define s0(x) (rotrFixed(x,1)^rotrFixed(x,8)^(x&gt;&gt;7))</span>00194 <span class="preprocessor"></span><span class="preprocessor">#define s1(x) (rotrFixed(x,19)^rotrFixed(x,61)^(x&gt;&gt;6))</span>00195 <span class="preprocessor"></span>00196 <span class="keywordtype">void</span> SHA512::Transform(word64 *state, <span class="keyword">const</span> word64 *data)00197 {00198         word64 W[16];00199         word64 T[8];00200     <span class="comment">/* Copy context-&gt;state[] to working vars */</span>00201         memcpy(T, state, <span class="keyword">sizeof</span>(T));00202     <span class="comment">/* 80 operations, partially loop unrolled */</span>00203         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j=0; j&lt;80; j+=16)00204         {00205                 R( 0); R( 1); R( 2); R( 3);00206                 R( 4); R( 5); R( 6); R( 7);00207                 R( 8); R( 9); R(10); R(11);00208                 R(12); R(13); R(14); R(15);00209         }00210     <span class="comment">/* Add the working vars back into context.state[] */</span>00211     state[0] += a(0);00212     state[1] += b(0);00213     state[2] += c(0);00214     state[3] += d(0);00215     state[4] += e(0);00216     state[5] += f(0);00217     state[6] += g(0);00218     state[7] += h(0);00219     <span class="comment">/* Wipe variables */</span>00220         memset(W, 0, <span class="keyword">sizeof</span>(W));00221         memset(T, 0, <span class="keyword">sizeof</span>(T));00222 }00223 00224 <span class="keyword">const</span> word64 SHA512::K[80] = {00225         W64LIT(0x428a2f98d728ae22), W64LIT(0x7137449123ef65cd),00226         W64LIT(0xb5c0fbcfec4d3b2f), W64LIT(0xe9b5dba58189dbbc),00227         W64LIT(0x3956c25bf348b538), W64LIT(0x59f111f1b605d019),00228         W64LIT(0x923f82a4af194f9b), W64LIT(0xab1c5ed5da6d8118),00229         W64LIT(0xd807aa98a3030242), W64LIT(0x12835b0145706fbe),00230         W64LIT(0x243185be4ee4b28c), W64LIT(0x550c7dc3d5ffb4e2),00231         W64LIT(0x72be5d74f27b896f), W64LIT(0x80deb1fe3b1696b1),00232         W64LIT(0x9bdc06a725c71235), W64LIT(0xc19bf174cf692694),00233         W64LIT(0xe49b69c19ef14ad2), W64LIT(0xefbe4786384f25e3),00234         W64LIT(0x0fc19dc68b8cd5b5), W64LIT(0x240ca1cc77ac9c65),00235         W64LIT(0x2de92c6f592b0275), W64LIT(0x4a7484aa6ea6e483),00236         W64LIT(0x5cb0a9dcbd41fbd4), W64LIT(0x76f988da831153b5),00237         W64LIT(0x983e5152ee66dfab), W64LIT(0xa831c66d2db43210),00238         W64LIT(0xb00327c898fb213f), W64LIT(0xbf597fc7beef0ee4),00239         W64LIT(0xc6e00bf33da88fc2), W64LIT(0xd5a79147930aa725),00240         W64LIT(0x06ca6351e003826f), W64LIT(0x142929670a0e6e70),00241         W64LIT(0x27b70a8546d22ffc), W64LIT(0x2e1b21385c26c926),00242         W64LIT(0x4d2c6dfc5ac42aed), W64LIT(0x53380d139d95b3df),00243         W64LIT(0x650a73548baf63de), W64LIT(0x766a0abb3c77b2a8),00244         W64LIT(0x81c2c92e47edaee6), W64LIT(0x92722c851482353b),00245         W64LIT(0xa2bfe8a14cf10364), W64LIT(0xa81a664bbc423001),00246         W64LIT(0xc24b8b70d0f89791), W64LIT(0xc76c51a30654be30),00247         W64LIT(0xd192e819d6ef5218), W64LIT(0xd69906245565a910),00248         W64LIT(0xf40e35855771202a), W64LIT(0x106aa07032bbd1b8),00249         W64LIT(0x19a4c116b8d2d0c8), W64LIT(0x1e376c085141ab53),00250         W64LIT(0x2748774cdf8eeb99), W64LIT(0x34b0bcb5e19b48a8),00251         W64LIT(0x391c0cb3c5c95a63), W64LIT(0x4ed8aa4ae3418acb),00252         W64LIT(0x5b9cca4f7763e373), W64LIT(0x682e6ff3d6b2b8a3),00253         W64LIT(0x748f82ee5defb2fc), W64LIT(0x78a5636f43172f60),00254         W64LIT(0x84c87814a1f0ab72), W64LIT(0x8cc702081a6439ec),00255         W64LIT(0x90befffa23631e28), W64LIT(0xa4506cebde82bde9),00256         W64LIT(0xbef9a3f7b2c67915), W64LIT(0xc67178f2e372532b),00257         W64LIT(0xca273eceea26619c), W64LIT(0xd186b8c721c0c207),00258         W64LIT(0xeada7dd6cde0eb1e), W64LIT(0xf57d4f7fee6ed178),00259         W64LIT(0x06f067aa72176fba), W64LIT(0x0a637dc5a2c898a6),00260         W64LIT(0x113f9804bef90dae), W64LIT(0x1b710b35131c471b),00261         W64LIT(0x28db77f523047d84), W64LIT(0x32caab7b40c72493),00262         W64LIT(0x3c9ebe0a15c9bebc), W64LIT(0x431d67c49c100d4c),00263         W64LIT(0x4cc5d4becb3e42b6), W64LIT(0x597f299cfc657e2a),00264         W64LIT(0x5fcb6fab3ad6faec), W64LIT(0x6c44198c4a475817)00265 };00266 00267 <span class="keywordtype">void</span> SHA384::Init()00268 {00269         m_digest[0] = W64LIT(0xcbbb9d5dc1059ed8);00270         m_digest[1] = W64LIT(0x629a292a367cd507);00271         m_digest[2] = W64LIT(0x9159015a3070dd17);00272         m_digest[3] = W64LIT(0x152fecd8f70e5939);00273         m_digest[4] = W64LIT(0x67332667ffc00b31);00274         m_digest[5] = W64LIT(0x8eb44a8768581511);00275         m_digest[6] = W64LIT(0xdb0c2e0d64f98fa7);00276         m_digest[7] = W64LIT(0x47b5481dbefa4fa4);00277 }00278 00279 <span class="preprocessor">#endif</span>00280 <span class="preprocessor"></span>00281 NAMESPACE_END</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:25 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 + -