C++ 使用命令行提示的Vigenere密码
我试图编写一个Vigenere密码,它读入(-e进行加密,-d进行解密)、一个关键字(在加密过程中使用)、一个原始消息来自的文本文件以及另一个加密/解密消息输出到的文本文件,所有这些都来自命令行参数。我在如何将命令行中的所有内容作为字符串读取以及如何使用字符进行实际加密方面遇到了一个问题。我在vigenere密码上发现了很多其他程序,但是没有一个程序的所有参数都是从命令行读入的。 这是我的(未完成的)代码C++ 使用命令行提示的Vigenere密码,c++,encryption,command-line,vigenere,C++,Encryption,Command Line,Vigenere,我试图编写一个Vigenere密码,它读入(-e进行加密,-d进行解密)、一个关键字(在加密过程中使用)、一个原始消息来自的文本文件以及另一个加密/解密消息输出到的文本文件,所有这些都来自命令行参数。我在如何将命令行中的所有内容作为字符串读取以及如何使用字符进行实际加密方面遇到了一个问题。我在vigenere密码上发现了很多其他程序,但是没有一个程序的所有参数都是从命令行读入的。 这是我的(未完成的)代码 #包括 #包括 #包括 #包括 使用名称空间std; 字符加密(字符密钥,字符普通); 字
#包括
#包括
#包括
#包括
使用名称空间std;
字符加密(字符密钥,字符普通);
字符解密(字符密钥、字符密码);
int main(int argc,char*argv[]){
ifstream infle(argv[3]);
出流管(argv[4]);
字符串键=argv[2];
对于(int i=0;i 如果(键[i]>='A'&键[i]='A'&键[i]='A'&键[i]='A'&键[i]='A'&键[i]尝试使用strcmp,而不是直接比较两个字符串。
在
及
你试过在“character”之间传递每个参数吗?比如:vigenere.exe-e“that's my string”?我在传递参数时没有问题,我在将它们转换为实际代码中的字符时遇到了问题(这是使用ASCII进行加密所需要的),而如果有意义的话,它们会作为字符串传递
#include<iostream>
#include<string>
#include<fstream>
#include<sstream>
using namespace std;
char encipher(char key, char plain);
char decipher(char key, char cipher);
int main(int argc, char* argv[]){
ifstream inFile(argv[3]);
ofstream outFile(argv[4]);
string key = argv[2];
for (int i = 0; i < argc; i++){
string arg = argv[i];
if (arg == "-e"){
inFile.open(arg.c_str());
string plain = ;
encipher(key, plain);
}
else if (arg == "-d"){
inFile.open(arg.c_str());
decipher(key, cipher);
}
}
char encipher(char key, char plain){
for (int i = 0; i < key.size(); i++){
if (key[i] >= 'A' && key[i] <= 'Z')
key += key[i];
else if (key[i] >= 'a' && key[i] <= 'z')
key += key[i] + 'A' - 'a';
return key;
}
}
char decipher(char key, char cipher){
for (int i = 0; i < key.size(); i++){
if (key[i] >= 'A' && key[i] <= 'Z')
key -= key[i];
else if (key[i] >= 'a' && key[i] <= 'z')
key -= key[i] + 'A' - 'a';
}
}
if (arg == "-e")
else if (arg == "-d")