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

📄 test_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00140                         <span class="keywordflow">case</span> <span class="charliteral">'v'</span>:00141                           {00142                                 <span class="keywordtype">bool</span> verified = RSAVerifyFile(argv[2], argv[3], argv[4]);00143                                 cout &lt;&lt; (verified ? <span class="stringliteral">"valid signature"</span> : <span class="stringliteral">"invalid signature"</span>) &lt;&lt; endl;00144                                 <span class="keywordflow">return</span> 0;00145                           }00146                         <span class="keywordflow">default</span>:00147                           {00148                                 <span class="keywordtype">char</span> privFilename[128], pubFilename[128];00149                                 <span class="keywordtype">char</span> seed[1024], message[1024];00150 00151                                 cout &lt;&lt; <span class="stringliteral">"Private key file: "</span>;00152                                 cin &gt;&gt; privFilename;00153 00154                                 cout &lt;&lt; <span class="stringliteral">"\nPublic key file: "</span>;00155                                 cin &gt;&gt; pubFilename;00156 00157                                 cout &lt;&lt; <span class="stringliteral">"\nRandom Seed: "</span>;00158                                 ws(cin);00159                                 cin.getline(seed, 1024);00160 00161                                 cout &lt;&lt; <span class="stringliteral">"\nMessage: "</span>;00162                                 cin.getline(message, 1024);00163 00164                                 string ciphertext = RSAEncryptString(pubFilename, seed, message);00165                                 cout &lt;&lt; <span class="stringliteral">"\nCiphertext: "</span> &lt;&lt; ciphertext &lt;&lt; endl;00166 00167                                 string decrypted = RSADecryptString(privFilename, ciphertext.c_str());00168                                 cout &lt;&lt; <span class="stringliteral">"\nDecrypted: "</span> &lt;&lt; decrypted &lt;&lt; endl;00169 00170                                 <span class="keywordflow">return</span> 0;00171                           }00172                         }00173                   }00174                 <span class="keywordflow">case</span> <span class="charliteral">'m'</span>:00175                         <span class="keywordflow">if</span> (command == <span class="stringliteral">"mac_dll"</span>)00176                         {00177                                 HMODULE hModule = LoadLibrary(argv[2]);00178                                 PGetPowerUpSelfTestStatus pGetPowerUpSelfTestStatus = (PGetPowerUpSelfTestStatus)GetProcAddress(hModule, <span class="stringliteral">"?GetPowerUpSelfTestStatus@CryptoPP@@YG?AW4PowerUpSelfTestStatus@1@XZ"</span>);00179                                 PGetActualMacAndLocation pGetActualMacAndLocation = (PGetActualMacAndLocation)GetProcAddress(hModule, <span class="stringliteral">"?GetActualMacAndLocation@CryptoPP@@YGPBEAAI0@Z"</span>);00180 00181                                 <a class="code" href="fips140_8h.html#a14">PowerUpSelfTestStatus</a> status = pGetPowerUpSelfTestStatus();00182                                 <span class="keywordflow">if</span> (status == POWER_UP_SELF_TEST_PASSED)00183                                 {00184                                         cout &lt;&lt; <span class="stringliteral">"Crypto++ DLL MAC is valid. Nothing to do.\n"</span>;00185                                         <span class="keywordflow">return</span> 0;00186                                 }00187 00188                                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> macSize, macFileLocation;00189                                 <span class="keyword">const</span> byte *pMac = pGetActualMacAndLocation(macSize, macFileLocation);00190                                 00191                                 <span class="keywordflow">if</span> (macFileLocation == 0)00192                                 {00193                                         cerr &lt;&lt; <span class="stringliteral">"Could not find MAC location in Crypto++ DLL.\n"</span>;00194                                         <span class="keywordflow">return</span> 1;00195                                 }00196                                 <span class="keywordflow">else</span>00197                                 {00198                                         <a class="code" href="class_sec_block.html">SecByteBlock</a> mac(pMac, macSize);        <span class="comment">// copy MAC before freeing the DLL</span>00199                                         BOOL r = FreeLibrary(hModule);00200                                         cout &lt;&lt; <span class="stringliteral">"Placing MAC in file "</span> &lt;&lt; argv[2] &lt;&lt; <span class="stringliteral">", location "</span> &lt;&lt; macFileLocation &lt;&lt; <span class="stringliteral">".\n"</span>;00201                                         std::ofstream dllFile(argv[2], ios::in | ios::out | ios::binary);00202                                         dllFile.seekp(macFileLocation);00203                                         dllFile.write((<span class="keyword">const</span> <span class="keywordtype">char</span> *)mac.<a class="code" href="class_sec_block.html#_sec_block_with_hinta11">data</a>(), macSize);00204                                         <span class="keywordflow">if</span> (!dllFile.good())00205                                         {00206                                                 cerr &lt;&lt; <span class="stringliteral">"Error writing file.\n"</span>;00207                                                 <span class="keywordflow">return</span> 1;00208                                         }00209                                         <span class="keywordflow">return</span> 0;00210                                 }00211                         }00212                         <span class="keywordflow">else</span>00213                         {00214                                 DigestFile(argv[2]);00215                                 <span class="keywordflow">return</span> 0;00216                         }00217                 <span class="keywordflow">case</span> <span class="charliteral">'t'</span>:00218                   {00219                         <span class="comment">// VC60 workaround: use char array instead of std::string to workaround MSVC's getline bug</span>00220                         <span class="keywordtype">char</span> passPhrase[MAX_PHRASE_LENGTH], plaintext[1024];00221 00222                         cout &lt;&lt; <span class="stringliteral">"Passphrase: "</span>;00223                         cin.getline(passPhrase, MAX_PHRASE_LENGTH);00224 00225                         cout &lt;&lt; <span class="stringliteral">"\nPlaintext: "</span>;00226                         cin.getline(plaintext, 1024);00227 00228                         string ciphertext = EncryptString(plaintext, passPhrase);00229                         cout &lt;&lt; <span class="stringliteral">"\nCiphertext: "</span> &lt;&lt; ciphertext &lt;&lt; endl;00230 00231                         string decrypted = DecryptString(ciphertext.c_str(), passPhrase);00232                         cout &lt;&lt; <span class="stringliteral">"\nDecrypted: "</span> &lt;&lt; decrypted &lt;&lt; endl;00233 00234                         <span class="keywordflow">return</span> 0;00235                   }00236                 <span class="keywordflow">case</span> <span class="charliteral">'e'</span>:00237                 <span class="keywordflow">case</span> <span class="charliteral">'d'</span>:00238                         <span class="keywordflow">if</span> (command == <span class="stringliteral">"e64"</span>)00239                                 Base64Encode(argv[2], argv[3]);00240                         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"d64"</span>)00241                                 Base64Decode(argv[2], argv[3]);00242                         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"e16"</span>)00243                                 HexEncode(argv[2], argv[3]);00244                         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"d16"</span>)00245                                 HexDecode(argv[2], argv[3]);00246                         <span class="keywordflow">else</span>00247                         {00248                                 <span class="keywordtype">char</span> passPhrase[MAX_PHRASE_LENGTH];00249                                 cout &lt;&lt; <span class="stringliteral">"Passphrase: "</span>;00250                                 cin.getline(passPhrase, MAX_PHRASE_LENGTH);00251                                 <span class="keywordflow">if</span> (command == <span class="stringliteral">"e"</span>)00252                                         EncryptFile(argv[2], argv[3], passPhrase);00253                                 <span class="keywordflow">else</span>00254                                         DecryptFile(argv[2], argv[3], passPhrase);00255                         }00256                         <span class="keywordflow">return</span> 0;00257                 <span class="keywordflow">case</span> <span class="charliteral">'s'</span>:00258                         <span class="keywordflow">if</span> (argv[1][1] == <span class="charliteral">'s'</span>)00259                         {00260                                 <span class="keywordtype">char</span> seed[1024];00261                                 cout &lt;&lt; <span class="stringliteral">"\nRandom Seed: "</span>;00262                                 ws(cin);00263                                 cin.getline(seed, 1024);00264                                 SecretShareFile(atoi(argv[2]), atoi(argv[3]), argv[4], seed);00265                         }00266                         <span class="keywordflow">else</span>00267                                 SecretRecoverFile(argc-3, argv[2], argv+3);00268                         <span class="keywordflow">return</span> 0;00269                 <span class="keywordflow">case</span> <span class="charliteral">'i'</span>:00270                         <span class="keywordflow">if</span> (argv[1][1] == <span class="charliteral">'d'</span>)00271                                 InformationDisperseFile(atoi(argv[2]), atoi(argv[3]), argv[4]);00272                         <span class="keywordflow">else</span>00273                                 InformationRecoverFile(argc-3, argv[2], argv+3);00274                         <span class="keywordflow">return</span> 0;00275                 <span class="keywordflow">case</span> <span class="charliteral">'v'</span>:00276                         <span class="keywordflow">return</span> !Validate(argc&gt;2 ? atoi(argv[2]) : 0, argv[1][1] == <span class="charliteral">'v'</span>, argc&gt;3 ? argv[3] : NULL);00277                 <span class="keywordflow">case</span> <span class="charliteral">'b'</span>:00278                         <span class="keywordflow">if</span> (argc&lt;3)00279                                 BenchMarkAll();00280                         <span class="keywordflow">else</span>00281                                 BenchMarkAll((<span class="keywordtype">float</span>)atof(argv[2]));00282                         <span class="keywordflow">return</span> 0;00283                 <span class="keywordflow">case</span> <span class="charliteral">'z'</span>:00284                         GzipFile(argv[3], argv[4], argv[2][0]-<span class="charliteral">'0'</span>);00285                         <span class="keywordflow">return</span> 0;

⌨️ 快捷键说明

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