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

📄 md5_8cpp-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>Crypto++: md5.cpp Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.5.2 --><div class="tabs">  <ul>    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>    <li><a href="namespaces.html"><span>Namespaces</span></a></li>    <li><a href="classes.html"><span>Classes</span></a></li>    <li class="current"><a href="files.html"><span>Files</span></a></li>  </ul></div><div class="tabs">  <ul>    <li><a href="files.html"><span>File&nbsp;List</span></a></li>    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>  </ul></div><h1>md5.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// md5.cpp - modified by Wei Dai from Colin Plumb's public domain md5.c</span><a name="l00002"></a>00002 <span class="comment">// any modifications are placed in the public domain</span><a name="l00003"></a>00003 <a name="l00004"></a>00004 <span class="preprocessor">#include "pch.h"</span><a name="l00005"></a>00005 <span class="preprocessor">#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1</span><a name="l00006"></a>00006 <span class="preprocessor"></span><span class="preprocessor">#include "md5.h"</span><a name="l00007"></a>00007 <span class="preprocessor">#include "misc.h"</span><a name="l00008"></a>00008 <a name="l00009"></a>00009 NAMESPACE_BEGIN(CryptoPP)<a name="l00010"></a>00010 namespace Weak1 {<a name="l00011"></a>00011 <a name="l00012"></a><a class="code" href="namespace_weak1.html#a454cd2e1910aff900b1350f537e41ee">00012</a> <span class="keywordtype">void</span> <a class="code" href="namespace_weak1.html#a454cd2e1910aff900b1350f537e41ee">MD5_TestInstantiations</a>()<a name="l00013"></a>00013 {<a name="l00014"></a>00014         <a class="code" href="class_weak1_1_1_m_d5.html" title="MD5">MD5</a> x;<a name="l00015"></a>00015 }<a name="l00016"></a>00016 <a name="l00017"></a><a class="code" href="class_weak1_1_1_m_d5.html#65d4cb2995e755a0553446ca538bbc1b">00017</a> <span class="keywordtype">void</span> MD5::InitState(HashWordType *state)<a name="l00018"></a>00018 {<a name="l00019"></a>00019         state[0] = 0x67452301L;<a name="l00020"></a>00020         state[1] = 0xefcdab89L;<a name="l00021"></a>00021         state[2] = 0x98badcfeL;<a name="l00022"></a>00022         state[3] = 0x10325476L;<a name="l00023"></a>00023 }<a name="l00024"></a>00024 <a name="l00025"></a><a class="code" href="class_weak1_1_1_m_d5.html#b215df1c0f444615b8aec1f12b1dacfb">00025</a> <span class="keywordtype">void</span> <a class="code" href="class_weak1_1_1_m_d5.html#b215df1c0f444615b8aec1f12b1dacfb">MD5::Transform</a> (word32 *digest, <span class="keyword">const</span> word32 *in)<a name="l00026"></a>00026 {<a name="l00027"></a>00027 <span class="comment">// #define F1(x, y, z) (x &amp; y | ~x &amp; z)</span><a name="l00028"></a>00028 <span class="preprocessor">#define F1(x, y, z) (z ^ (x &amp; (y ^ z)))</span><a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define F2(x, y, z) F1(z, x, y)</span><a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define F3(x, y, z) (x ^ y ^ z)</span><a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#define F4(x, y, z) (y ^ (x | ~z))</span><a name="l00032"></a>00032 <span class="preprocessor"></span><a name="l00033"></a>00033 <span class="preprocessor">#define MD5STEP(f, w, x, y, z, data, s) \</span><a name="l00034"></a>00034 <span class="preprocessor">        w = rotlFixed(w + f(x, y, z) + data, s) + x</span><a name="l00035"></a>00035 <span class="preprocessor"></span><a name="l00036"></a>00036     word32 a, b, c, d;<a name="l00037"></a>00037 <a name="l00038"></a>00038         a=digest[0];<a name="l00039"></a>00039         b=digest[1];<a name="l00040"></a>00040         c=digest[2];<a name="l00041"></a>00041         d=digest[3];<a name="l00042"></a>00042 <a name="l00043"></a>00043     MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);<a name="l00044"></a>00044     MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);<a name="l00045"></a>00045     MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);<a name="l00046"></a>00046     MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);<a name="l00047"></a>00047     MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);<a name="l00048"></a>00048     MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);<a name="l00049"></a>00049     MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);<a name="l00050"></a>00050     MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);<a name="l00051"></a>00051     MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);<a name="l00052"></a>00052     MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);<a name="l00053"></a>00053     MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);<a name="l00054"></a>00054     MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);<a name="l00055"></a>00055     MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);<a name="l00056"></a>00056     MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);<a name="l00057"></a>00057     MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);<a name="l00058"></a>00058     MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);<a name="l00059"></a>00059 <a name="l00060"></a>00060     MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);<a name="l00061"></a>00061     MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);<a name="l00062"></a>00062     MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);<a name="l00063"></a>00063     MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);<a name="l00064"></a>00064     MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);<a name="l00065"></a>00065     MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);<a name="l00066"></a>00066     MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);<a name="l00067"></a>00067     MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);<a name="l00068"></a>00068     MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);<a name="l00069"></a>00069     MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);<a name="l00070"></a>00070     MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);<a name="l00071"></a>00071     MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);<a name="l00072"></a>00072     MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);<a name="l00073"></a>00073     MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);<a name="l00074"></a>00074     MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);<a name="l00075"></a>00075     MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);<a name="l00076"></a>00076 <a name="l00077"></a>00077     MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);<a name="l00078"></a>00078     MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);<a name="l00079"></a>00079     MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);<a name="l00080"></a>00080     MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);<a name="l00081"></a>00081     MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);<a name="l00082"></a>00082     MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);<a name="l00083"></a>00083     MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);<a name="l00084"></a>00084     MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);<a name="l00085"></a>00085     MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);<a name="l00086"></a>00086     MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);<a name="l00087"></a>00087     MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);<a name="l00088"></a>00088     MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);<a name="l00089"></a>00089     MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);<a name="l00090"></a>00090     MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);<a name="l00091"></a>00091     MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);<a name="l00092"></a>00092     MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);<a name="l00093"></a>00093 <a name="l00094"></a>00094     MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);<a name="l00095"></a>00095     MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);<a name="l00096"></a>00096     MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);<a name="l00097"></a>00097     MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);<a name="l00098"></a>00098     MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);<a name="l00099"></a>00099     MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);<a name="l00100"></a>00100     MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);<a name="l00101"></a>00101     MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);<a name="l00102"></a>00102     MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);<a name="l00103"></a>00103     MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);<a name="l00104"></a>00104     MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);<a name="l00105"></a>00105     MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);<a name="l00106"></a>00106     MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);<a name="l00107"></a>00107     MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);<a name="l00108"></a>00108     MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);<a name="l00109"></a>00109     MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);<a name="l00110"></a>00110 <a name="l00111"></a>00111         digest[0]+=a;<a name="l00112"></a>00112         digest[1]+=b;<a name="l00113"></a>00113         digest[2]+=c;<a name="l00114"></a>00114         digest[3]+=d;<a name="l00115"></a>00115 }<a name="l00116"></a>00116 <a name="l00117"></a>00117 }<a name="l00118"></a>00118 NAMESPACE_END</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 1 11:11:22 2007 for Crypto++ by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address></body></html>

⌨️ 快捷键说明

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