Vigenere密码使用命令行提示

Vigenere Cipher Using Command Line Prompts

本文关键字:命令行 提示 密码 Vigenere      更新时间:2023-10-16

我正在尝试编写一个wigenere密码,该密码在(-e to egempt,-d to newoppt)中,一个关键词(加密期间使用),一个文本文件,其中原始消息来自和另一个来自命令行参数输出的加密/解密消息的文本文件。我对如何读取从命令行中读取所有内容的所有内容以及使用字符来进行实际加密有问题。我发现很多其他程序仅在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")