2

嗨,我尝试用 C++ 编写代码。此代码仅使文本文件易于加密并保存到新文件中。当我编译这段代码时,防病毒软件说,它是病毒/间谍软件 Gen:Variant.Kazy.20825。不知道为什么是病毒。这是我的代码:

#include <iostream>
#include <fstream>
#include <string>


using namespace std;

void controlParameters(int argc){  //check if input parameters are ok
    if(argc == 1){
        cout << "Pokud chcete text zasifrovat, spustte program s parametrem: -enc \"Nazev_souboru.txt\"\n";
        cout << "Pokud ho chcete desifrovat, spustte program s parametrem: -dec \"Nazev_souboru.txt\"\n";
    }else if(argc > 3){
        cout << "Moc parametru. Spustte si program bez parametru.\n";
    }else if(argc < 3){
        cout << "Chybi jeden parametr. Spustte si program bez parametru.\n";
    }else{
        cout << "Vsechno vypada zatim dobre\n";
    }
}

void encryption(string &file);  //encrypt text file
void decryption(string &file);  //decrypt text file
bool controlFile(string &file); //check if file can be opened

int main(int argc, char **argv){
    controlParameters(argc);
    string file;
    file = argv[2];
    if(controlFile(file)){

    }else{
        cout << "Soubor nesel nacist." << endl;
        return -1;
    }
    cout << "Ukonceno.\nZmacknete ENTER pro pokracovani..."<<endl;
    cin.get();
    return 0;
}

bool controlFile(string &file){
    ifstream ifs;
    ifs.open(file);
    if(ifs.is_open()){
        ifs.close();
        return true;
    }else{
        ifs.close();        
        return false;
    }
}

void encryption(string &file){
    ifstream ifs;
    ofstream ofs;
    string line;    
    ifs.open(file);
    ofs.open("encrypt.txt");
    if(ifs.is_open()){
        while(!ifs.eof()){
            getline(ifs,line);
            int a = line.length();
            int i = 0;
            while(i < a){               
                ofs << ((char)(line[i]^100));               
            }
            line.clear();
            ofs << "\n";
        }
    }else{
        cout << "Nelze nacist soubor" << endl;
    }
}

void decryption(string &file){
    ifstream ifs;
    ofstream ofs;
    string line;
    ifs.open(file);
    ofs.open("decrypt.txt");
    if(ifs.is_open()){
        while(!ifs.eof()){
            getline(ifs,line);
            int a =line.length();
            int i = 0;
            while(i < a){               
                ofs << ((char)(line[i]^100));               
            }
            line.clear();
            ofs << "\n";
        }
    }else{
        cout << "Nelze nacist soubor" << endl;
    }
}
4

2 回答 2

5

最好从病毒扫描程序中排除源代码控制目录;即使在执行源代码控制操作或编译时没有误报,它们也会导致性能和锁定问题(我已经看到它发生过几次)。

因此,如果只是为了让您的编程体验更可靠,请禁用这些目录上的病毒扫描程序。

您可能仍希望扫描您的可执行文件的最终发布版本,以帮助避免误报:毕竟,即使病毒扫描程序阻塞不是您的错,给用户留下一个好印象也不是什么好印象。

于 2013-01-22T14:38:13.157 回答
4

防病毒软件使用“启发式”来确定什么是病毒,什么不是。因此,它会在文件中查找执行它认为可疑的事情的模式。我在您的代码中看不到任何直接错误,因此我怀疑这是“误报”。我个人不喜欢杀毒软件,它带来的问题多于解决的问题......

顺便说一句,您可以将“输出文件名”添加到您的加密/解密函数中,并使它们成为一个函数!;)

于 2013-01-22T14:27:50.363 回答