📄 test_8cpp-source.html
字号:
<!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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Compound Members</a> | <a class="qindex" href="globals.html">File 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 <iostream></span>00027 <span class="preprocessor">#include <time.h></span>00028 00029 <span class="preprocessor">#if defined(_WIN32) || defined(__CYGWIN__)</span>00030 <span class="preprocessor"></span><span class="preprocessor">#include <windows.h></span>00031 <span class="preprocessor">#endif</span>00032 <span class="preprocessor"></span>00033 <span class="preprocessor">#if (_MSC_VER >= 1000)</span>00034 <span class="preprocessor"></span><span class="preprocessor">#include <crtdbg.h></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__) && defined(macintosh)</span>00038 <span class="preprocessor"></span><span class="preprocessor">#include <console.h></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__) && defined(macintosh)</span>00098 <span class="preprocessor"></span> argc = ccommand(&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 < 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 << <span class="stringliteral">"Key length in bits: "</span>;00118 cin >> keyLength;00119 00120 cout << <span class="stringliteral">"\nSave private key to file: "</span>;00121 cin >> privFilename;00122 00123 cout << <span class="stringliteral">"\nSave public key to file: "</span>;00124 cin >> pubFilename;00125 00126 cout << <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 + -