Vigenere Cipher使用命令行提示

问题描述 投票:2回答:1

我正在尝试编写一个读入的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';

    }
}
c++ encryption command-line vigenere
1个回答
0
投票

尝试使用strcmp而不是直接比较两个字符串。在

if (arg == "-e")

else if (arg == "-d")
© www.soinside.com 2019 - 2024. All rights reserved.