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

📄 test_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Crypto++: test.cpp Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.2 --><div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div><h1>test.cpp</h1><div class="fragment"><pre>00001 <span class="comment">// test.cpp - written and placed in the public domain by Wei Dai</span>00002 00003 <span class="preprocessor">#include "dll.h"</span>00004 <span class="preprocessor">#include "md5.h"</span>00005 <span class="preprocessor">#include "sha.h"</span>00006 <span class="preprocessor">#include "ripemd.h"</span>00007 <span class="preprocessor">#include "files.h"</span>00008 <span class="preprocessor">#include "rng.h"</span>00009 <span class="preprocessor">#include "hex.h"</span>00010 <span class="preprocessor">#include "gzip.h"</span>00011 <span class="preprocessor">#include "default.h"</span>00012 <span class="preprocessor">#include "<a class="code" href="rsa_8h.html">rsa.h</a>"</span>00013 <span class="preprocessor">#include "randpool.h"</span>00014 <span class="preprocessor">#include "ida.h"</span>00015 <span class="preprocessor">#include "base64.h"</span>00016 <span class="preprocessor">#include "socketft.h"</span>00017 <span class="preprocessor">#include "<a class="code" href="dsa_8h.html">dsa.h</a>"</span>00018 <span class="preprocessor">#include "<a class="code" href="rsa_8h.html">rsa.h</a>"</span>00019 <span class="preprocessor">#include "osrng.h"</span>00020 <span class="preprocessor">#include "wait.h"</span>00021 <span class="preprocessor">#include "<a class="code" href="fips140_8h.html">fips140.h</a>"</span>00022 00023 <span class="preprocessor">#include "validate.h"</span>00024 <span class="preprocessor">#include "bench.h"</span>00025 00026 <span class="preprocessor">#include &lt;iostream&gt;</span>00027 <span class="preprocessor">#include &lt;time.h&gt;</span>00028 00029 <span class="preprocessor">#if defined(_WIN32) || defined(__CYGWIN__)</span>00030 <span class="preprocessor"></span><span class="preprocessor">#include &lt;windows.h&gt;</span>00031 <span class="preprocessor">#endif</span>00032 <span class="preprocessor"></span>00033 <span class="preprocessor">#if (_MSC_VER &gt;= 1000)</span>00034 <span class="preprocessor"></span><span class="preprocessor">#include &lt;crtdbg.h&gt;</span>             <span class="comment">// for the debug heap</span>00035 <span class="preprocessor">#endif</span>00036 <span class="preprocessor"></span>00037 <span class="preprocessor">#if defined(__MWERKS__) &amp;&amp; defined(macintosh)</span>00038 <span class="preprocessor"></span><span class="preprocessor">#include &lt;console.h&gt;</span>00039 <span class="preprocessor">#endif</span>00040 <span class="preprocessor"></span>00041 USING_NAMESPACE(CryptoPP)00042 USING_NAMESPACE(std)00043 00044 <span class="keyword">const</span> <span class="keywordtype">int</span> MAX_PHRASE_LENGTH=250;00045 00046 <span class="keywordtype">void</span> GenerateRSAKey(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> keyLength, <span class="keyword">const</span> <span class="keywordtype">char</span> *privFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *pubFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *seed);00047 string RSAEncryptString(<span class="keyword">const</span> <span class="keywordtype">char</span> *pubFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *seed, <span class="keyword">const</span> <span class="keywordtype">char</span> *message);00048 string RSADecryptString(<span class="keyword">const</span> <span class="keywordtype">char</span> *privFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *ciphertext);00049 <span class="keywordtype">void</span> RSASignFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *privFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *messageFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *signatureFilename);00050 <span class="keywordtype">bool</span> RSAVerifyFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *pubFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *messageFilename, <span class="keyword">const</span> <span class="keywordtype">char</span> *signatureFilename);00051 00052 <span class="keywordtype">void</span> DigestFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *file);00053 <span class="keywordtype">void</span> HmacFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *hexKey, <span class="keyword">const</span> <span class="keywordtype">char</span> *file);00054 00055 string EncryptString(<span class="keyword">const</span> <span class="keywordtype">char</span> *plaintext, <span class="keyword">const</span> <span class="keywordtype">char</span> *passPhrase);00056 string DecryptString(<span class="keyword">const</span> <span class="keywordtype">char</span> *ciphertext, <span class="keyword">const</span> <span class="keywordtype">char</span> *passPhrase);00057 00058 <span class="keywordtype">void</span> EncryptFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out, <span class="keyword">const</span> <span class="keywordtype">char</span> *passPhrase);00059 <span class="keywordtype">void</span> DecryptFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out, <span class="keyword">const</span> <span class="keywordtype">char</span> *passPhrase);00060 00061 <span class="keywordtype">void</span> SecretShareFile(<span class="keywordtype">int</span> threshold, <span class="keywordtype">int</span> nShares, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <span class="keywordtype">char</span> *seed);00062 <span class="keywordtype">void</span> SecretRecoverFile(<span class="keywordtype">int</span> threshold, <span class="keyword">const</span> <span class="keywordtype">char</span> *outFilename, <span class="keywordtype">char</span> *<span class="keyword">const</span> *inFilenames);00063 00064 <span class="keywordtype">void</span> InformationDisperseFile(<span class="keywordtype">int</span> threshold, <span class="keywordtype">int</span> nShares, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename);00065 <span class="keywordtype">void</span> InformationRecoverFile(<span class="keywordtype">int</span> threshold, <span class="keyword">const</span> <span class="keywordtype">char</span> *outFilename, <span class="keywordtype">char</span> *<span class="keyword">const</span> *inFilenames);00066 00067 <span class="keywordtype">void</span> GzipFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out, <span class="keywordtype">int</span> deflate_level);00068 <span class="keywordtype">void</span> GunzipFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out);00069 00070 <span class="keywordtype">void</span> Base64Encode(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out);00071 <span class="keywordtype">void</span> Base64Decode(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out);00072 <span class="keywordtype">void</span> HexEncode(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out);00073 <span class="keywordtype">void</span> HexDecode(<span class="keyword">const</span> <span class="keywordtype">char</span> *in, <span class="keyword">const</span> <span class="keywordtype">char</span> *out);00074 00075 <span class="keywordtype">void</span> ForwardTcpPort(<span class="keyword">const</span> <span class="keywordtype">char</span> *sourcePort, <span class="keyword">const</span> <span class="keywordtype">char</span> *destinationHost, <span class="keyword">const</span> <span class="keywordtype">char</span> *destinationPort);00076 00077 <span class="keywordtype">void</span> FIPS140_SampleApplication();00078 <span class="keywordtype">void</span> FIPS140_GenerateRandomFiles();00079 00080 <span class="keywordtype">bool</span> Validate(<span class="keywordtype">int</span>, <span class="keywordtype">bool</span>, <span class="keyword">const</span> <span class="keywordtype">char</span> *);00081 00082 <span class="preprocessor">#ifdef __BCPLUSPLUS__</span>00083 <span class="preprocessor"></span><span class="keywordtype">int</span> cmain(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])00084 #elif defined(_MSC_VER)00085 <span class="keywordtype">int</span> __cdecl main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])00086 #<span class="keywordflow">else</span>00087 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])00088 #endif00089 {00090 <span class="preprocessor">#ifdef _CRTDBG_LEAK_CHECK_DF</span>00091 <span class="preprocessor"></span>        <span class="comment">// Turn on leak-checking</span>00092         <span class="keywordtype">int</span> tempflag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );00093         tempflag |= _CRTDBG_LEAK_CHECK_DF;00094         _CrtSetDbgFlag( tempflag );00095 <span class="preprocessor">#endif</span>00096 <span class="preprocessor"></span>00097 <span class="preprocessor">#if defined(__MWERKS__) &amp;&amp; defined(macintosh)</span>00098 <span class="preprocessor"></span>        argc = ccommand(&amp;argv);00099 <span class="preprocessor">#endif</span>00100 <span class="preprocessor"></span>00101         <span class="keywordflow">try</span>00102         {00103                 std::string command, executableName, macFilename;00104 00105                 <span class="keywordflow">if</span> (argc &lt; 2)00106                         command = <span class="charliteral">'h'</span>;00107                 <span class="keywordflow">else</span>00108                         command = argv[1];00109 00110                 <span class="keywordflow">switch</span> (command[0])00111                 {00112                 <span class="keywordflow">case</span> <span class="charliteral">'g'</span>:00113                   {00114                         <span class="keywordtype">char</span> seed[1024], privFilename[128], pubFilename[128];00115                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> keyLength;00116 00117                         cout &lt;&lt; <span class="stringliteral">"Key length in bits: "</span>;00118                         cin &gt;&gt; keyLength;00119 00120                         cout &lt;&lt; <span class="stringliteral">"\nSave private key to file: "</span>;00121                         cin &gt;&gt; privFilename;00122 00123                         cout &lt;&lt; <span class="stringliteral">"\nSave public key to file: "</span>;00124                         cin &gt;&gt; pubFilename;00125 00126                         cout &lt;&lt; <span class="stringliteral">"\nRandom Seed: "</span>;00127                         ws(cin);00128                         cin.getline(seed, 1024);00129 00130                         GenerateRSAKey(keyLength, privFilename, pubFilename, seed);00131                         <span class="keywordflow">return</span> 0;00132                   }00133                 <span class="keywordflow">case</span> <span class="charliteral">'r'</span>:00134                   {00135                         <span class="keywordflow">switch</span> (argv[1][1])00136                         {00137                         <span class="keywordflow">case</span> <span class="charliteral">'s'</span>:00138                                 RSASignFile(argv[2], argv[3], argv[4]);00139                                 <span class="keywordflow">return</span> 0;

⌨️ 快捷键说明

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