📄 sha_8cpp-source.html
字号:
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>>7))</span>00194 <span class="preprocessor"></span><span class="preprocessor">#define s1(x) (rotrFixed(x,19)^rotrFixed(x,61)^(x>>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->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<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 + -