Vigenere Cipher使用命令行提示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vigenere Cipher使用命令行提示相关的知识,希望对你有一定的参考价值。
我正在尝试编写一个读入的Vigenere密码(-e加密,-d解密),关键字(加密期间使用),原始邮件来自的文本文件,以及另一个文本文件。所有来自命令行参数的加密/解密消息都被输出。我遇到了如何从命令行以字符串形式读取所有内容并使用字符进行实际加密的问题。我在vigenere密码上找到了很多其他程序,但没有一个程序从命令行读入所有参数。这是我的(未完成的)代码。
#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';
}
}
答案
尝试使用strcmp而不是直接比较两个字符串。在
if (arg == "-e")
和
else if (arg == "-d")
以上是关于Vigenere Cipher使用命令行提示的主要内容,如果未能解决你的问题,请参考以下文章