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使用命令行提示的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 的 Vigenere Cipher 存在输出问题

PSET 2:Vigenere Cipher 部分工作?

Vigenere Cipher 没有错误消息 Python

C++ 链表凯撒密码 Vigenere Cipher

vigenere cipher - 不添加正确的值

Vigenere Cipher - 莫名其妙的细微差别